我有一个名为MyPath
的字符串参数的Jenkins作业,一个groovy脚本构建步骤,然后是批处理命令构建步骤。
如果我开始工作以使MyPath
的值为" C:\Temp\
",我希望groovy脚本将MyPath
的值更改为be" C:\Temp\3.4\setup.exe
"然后我想使用批处理文件来执行MyPath
。
我知道我可以从groovy启动一个进程,并且我可以批量执行我的groovy逻辑,如果我可以在构建步骤之间传递变量,那就太好了。
要在groovy中使用参数,您必须使用该库来解析它(如下所示)。有没有可以设置它的方法?
def path = build.buildVariableResolver.resolve("MyPath");
如果它存在,这样的东西将是完美的:
buildVariableChanger.change("MyPath") = "C:\3.4\setup.exe"
我也查看了EnvInject插件,但据我所知,它不支持我想要做的事情。
感谢。
答案 0 :(得分:2)
我不认为这是可能的,因为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
答案 1 :(得分:1)
一个选项应该是使用SETX Windows命令来设置用户(或系统)环境变量的值。
如果在Groovy步骤中设置此变量,则批处理步骤应该能够使用它。
答案 2 :(得分:0)
为什么不简单地将变量传递给批处理?您可以从第一个脚本启动批处理,而不是使用自己的构建步骤启动它。只需使用yourscript.bat C:\3.4\setup.exe
进行调用即可。您可以使用%1
访问参数。如果将行%1
插入到bat文件中,它将执行C:\3.4\setup.exe
。