2014-02-06 247 views
0

我想设置作业环境变量。一些变量是从其他环境变量设置的。例如在Windows上:从另一个Jenkins环境变量设置Jenkins环境变量

var1=this 
var2=that 
var3=other 
var4=%var1%_%var2%_%var3% 

我想将var4设置为'this_that_other'。我尝试将前三个设置为作业变量,第四个作为构建变量。没有快乐。

+0

可能要使用一些黑客/解决办法像它写入一个文件并重新读取。 – paulm

+0

谢谢。这是我所害怕的。 –

回答

1

您可以使用Jenkins的EnvInject Plugin来做到这一点。这里var1,var2和var3是构建参数或预定义的环境变量。 Groovy也可以做同样的事情。

enter image description here

+0

我们使用EnvInject插件(1.83),也许我对它的使用很愚蠢,但它没有帮助。 –

+0

我的问题陈述并不精确,但我有:$ var1 = this $ var2 = that $ var3 = $ var1_ $ var2。它不会将_视为文字,而是寻找$ var1_。它使用\而不是_工作。出路在于设置$ sep = _和$ var3 = $ var1 $ sep $ var2。 –

0

它的工作设置VAR4在一个批处理命令,如果这是在需要VAR4:

set var4=%var1%_%var2%_%var3% 

VAR4现在具有用于批处理命令的持续时间的所希望的值,但不用于任何随后的构建步骤。这对我没有帮助,因为我需要在ant命令中使用var4。

0

因为您只在当前进程范围内设置变量。正如你所说,如果你不想使用文件来存储和检索,另一个选择是使环境变量设置机器明智,如果这符合你的需要,并不会有任何副作用。

如果你能安装PowerShell插件,使用PowerShell脚本是很容易做到这一点:

[Environment]::SetEnvironmentVariable("VAR4", $WhatEverYouWant, "Machine") 

这样,就可以立即上机水平VAR4变量,在所有其他进程的意义。

+0

谢谢安迪,我不知道,但在这种情况下,可能会有多个进程在该机器上运行,VAR4的值不同。 –