【问题标题】:variable set in Windows Powershell of Jenkins build, not available in other build steps在 Jenkins 构建的 Windows Powershell 中设置的变量,在其他构建步骤中不可用
【发布时间】:2019-05-26 01:13:30
【问题描述】:

我有一个带有一个名为 VERSION 的参数的 Jenkins 版本。

基于变量的长度,我在 Windows Powershell 中修改它的值,然后在下一个构建步骤中,我想使用它。

但修改后的值并没有反映在下一个构建步骤执行中,它仍然引用作为参数输入的初始值。我试过 ENV,script,global 它们似乎都不起作用。

Windows powershell 构建步骤

输入 VERSION=1810(通过 jenkins 构建)

           if ("$ENV:VERSION".length -eq 4)
        {
           $ENV:VERSION = "$ENV:VERSION",3 -join ""  (here it will be 18103)
         }

         Write-Output "$ENV:VERSION" (18103 here aswell)

稍后在 Nexus 工件上传器中,我将此变量称为 ${VERSION} 并且上面的更新值没有反映

                 (here it is 1810 and not 18103) 

请帮忙

【问题讨论】:

    标签: powershell variables jenkins scope environment-variables


    【解决方案1】:

    我找到了另一个适用于 Freestyle 项目工作的选项。

    powershell 第一步:

    [Environment]::SetEnvironmentVariable('IMAGE_VERSION', $imageVersion, 'Machine')
    

    第二个powershell步骤:

    $imageVersion = [Environment]::GetEnvironmentVariable('IMAGE_VERSION', 'Machine')
    

    【讨论】:

      【解决方案2】:

      您可以尝试使用EnvInject Plugin 并在您的工作中设置额外的PROJ_VERSION=$ENV:VERSION 变量。在这种情况下,它应该可以正常工作。如果它不能直接在Properties Content 中工作,请尝试使用this 示例中的文件注入。

      【讨论】:

      • 感谢帮助
      【解决方案3】:

      这是环境变量范围的一般问题。每个进程都从其父进程继承环境变量,但有自己的副本,您所做的任何修改只会反映在当前进程和子进程中。

      我认为您必须找到某种方法将值传递给不依赖环境变量的未来步骤。

      【讨论】:

        猜你喜欢
        • 2018-04-04
        • 2015-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-01-03
        • 2022-11-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多