在Windows Jenkins构建的Powershell中设置的变量,在其他构建步骤中不可用

时间:2018-12-28 06:43:05

标签: powershell variables jenkins scope environment-variables

我有一个带有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) 

请帮助

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

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