在 Jenkins 构建步骤之间更改环境变量
Change an environment variable in between Jenkins build steps
我有一个 Jenkins 作业,其中有一个名为 MyPath
的字符串参数,一个 groovy 脚本构建步骤,然后是一个批处理命令构建步骤。
如果我开始一项工作使得 MyPath
的值为“C:\Temp\
”,我希望 groovy 脚本将 MyPath
的值更改为是“C:\Temp.4\setup.exe
” 然后我想用批处理文件执行 MyPath
.
我知道我可以从 groovy 启动一个进程并且我可以批量执行我的 groovy 逻辑,如果我可以在构建步骤之间传递变量就好了。
要使用 groovy 中的参数,您必须使用库来解析它(如下)。有什么方法可以设置吗?
def path = build.buildVariableResolver.resolve("MyPath");
如果有这样的东西就完美了:
buildVariableChanger.change("MyPath") = "C:.4\setup.exe"
我也查看了 EnvInject 插件,但据我所知,它不支持我想做的事情。
谢谢。
一个选项应该是使用 SETX Windows 命令来设置用户(或系统)环境变量的值。
如果您在 Groovy 步骤中设置此变量,那么批处理步骤应该可以使用它。
为什么不直接将变量传递给批处理?您可以从第一个脚本开始批处理,而不是从自己的构建步骤开始。只需用 yourscript.bat C:.4\setup.exe
调用它。您可以使用 %1
访问参数。如果您将行 %1
插入到您的 bat 文件中,它将执行 C:.4\setup.exe
.
我认为这是不可能的,因为 StringParameterValue.class 的字段值是最终的:http://javadoc.jenkins-ci.org/hudson/model/StringParameterValue.html
解决方案可能是在 groovy 脚本中创建其他参数
import hudson.model.StringParameterValue
import hudson.model.ParametersAction
def newPath = build.buildVariableResolver.resolve("MyPath") + "3.4\setup.exe"
build.addAction(new ParametersAction (new StringParameterValue ('path2', newPath)))
然后在批处理命令中使用参数path2
我有一个 Jenkins 作业,其中有一个名为 MyPath
的字符串参数,一个 groovy 脚本构建步骤,然后是一个批处理命令构建步骤。
如果我开始一项工作使得 MyPath
的值为“C:\Temp\
”,我希望 groovy 脚本将 MyPath
的值更改为是“C:\Temp.4\setup.exe
” 然后我想用批处理文件执行 MyPath
.
我知道我可以从 groovy 启动一个进程并且我可以批量执行我的 groovy 逻辑,如果我可以在构建步骤之间传递变量就好了。
要使用 groovy 中的参数,您必须使用库来解析它(如下)。有什么方法可以设置吗?
def path = build.buildVariableResolver.resolve("MyPath");
如果有这样的东西就完美了:
buildVariableChanger.change("MyPath") = "C:.4\setup.exe"
我也查看了 EnvInject 插件,但据我所知,它不支持我想做的事情。
谢谢。
一个选项应该是使用 SETX Windows 命令来设置用户(或系统)环境变量的值。
如果您在 Groovy 步骤中设置此变量,那么批处理步骤应该可以使用它。
为什么不直接将变量传递给批处理?您可以从第一个脚本开始批处理,而不是从自己的构建步骤开始。只需用 yourscript.bat C:.4\setup.exe
调用它。您可以使用 %1
访问参数。如果您将行 %1
插入到您的 bat 文件中,它将执行 C:.4\setup.exe
.
我认为这是不可能的,因为 StringParameterValue.class 的字段值是最终的:http://javadoc.jenkins-ci.org/hudson/model/StringParameterValue.html
解决方案可能是在 groovy 脚本中创建其他参数
import hudson.model.StringParameterValue
import hudson.model.ParametersAction
def newPath = build.buildVariableResolver.resolve("MyPath") + "3.4\setup.exe"
build.addAction(new ParametersAction (new StringParameterValue ('path2', newPath)))
然后在批处理命令中使用参数path2