首页 > 解决方案 > 在 Jenkins 构建的 Windows Powershell 中设置的变量,在其他构建步骤中不可用

问题描述

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

请帮忙

标签: powershellvariablesjenkinsscopeenvironment-variables

解决方案


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

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


推荐阅读