从另一个Jenkins环境变量设置Jenkins环境变量
我正在尝试设置工作环境变量。一些变量是从其他环境变量设置的。例如,在Windows上:从另一个Jenkins环境变量设置Jenkins环境变量,jenkins,environment,Jenkins,Environment,我正在尝试设置工作环境变量。一些变量是从其他环境变量设置的。例如,在Windows上: var1=this var2=that var3=other var4=%var1%_%var2%_%var3% 我想把var4设置为“this\u that\u other”。我尝试将前三个设置为作业变量,第四个设置为构建变量。没有乐趣。如果在批处理命令中需要var4,则在批处理命令中设置var4是可行的: set var4=%var1%_%var2%_%var3% var4现在在批处理命令的持续时间内
var1=this
var2=that
var3=other
var4=%var1%_%var2%_%var3%
我想把var4设置为“this\u that\u other”。我尝试将前三个设置为作业变量,第四个设置为构建变量。没有乐趣。如果在批处理命令中需要var4,则在批处理命令中设置var4是可行的:
set var4=%var1%_%var2%_%var3%
var4现在在批处理命令的持续时间内具有所需的值,但不适用于任何后续构建步骤。这对我没有帮助,因为我需要在ant命令中使用var4。因为您只在当前进程范围内设置变量。正如您所说的,如果您不想使用文件来存储和检索,另一个选项是使环境变量设置机器化,如果这符合您的需要并且不会有任何副作用的话 如果您可以安装PowerShell插件,那么使用PowerShell脚本很容易做到这一点:
[Environment]::SetEnvironmentVariable("VAR4", $WhatEverYouWant, "Machine")
这使得VAR4变量在机器级别上立即可用,这意味着在所有其他进程中都可用。您可以使用for Jenkins来实现这一点。这里,var1、var2和var3是构建参数或预定义的环境变量。同样的事情也可以使用Groovy来完成
可能需要使用一些黑客/解决方法,例如将其写入文件并重新读取。谢谢。这正是我所担心的。谢谢Andy,我不知道,但在这种情况下,可能有多个进程在这台机器上运行,VAR4的值不同。我们正在使用EnvInject插件(1.83),也许我对它的使用很愚蠢,我的问题陈述并不精确,但我有:$var1=这个$var2=那个$var3=$var1\u$var2。它不会将u视为文字,而是查找$var1。它使用\而不是。解决方法是设置$sep=和$var3=$var1$sep$var2。