有人知道我如何在jenkins中使用inject变量或其他方式设置基于unix终端命令的环境变量值。例如CurrentBranch= ls /project/folder | grep my_name
。这似乎行不通。我想要这个命令,ls/project/folder | grep my_name,被评估,结果应该设置为CurrentBranch。
由于某些原因,CurrentBranch变量值永远不会被求值,但它总是有这样一个值:ls /project/folder | grep my_name
有谁知道我做错了什么吗
谢谢。
我不认为你可以这样做,以便任何 Jenkins任务都可以使用。
你可以写你的Jenkins任务,让他们都在执行一个shell脚本,然后你的问题归结为采购一个合适的rc文件(我们使用例如zsh作为一个shell,并有一个特殊的rc文件只是为Jenkins),在这个文件中,你可以设置你的环境在通常的方式,即
export $(ls /project/folder | grep my_name)
(当然,以这种方式处理ls的输出不是最好的主意,但这是另一个主题)
你可以将CurrentBranch保存在一个名为env的文件中,并使用EnvFile Plugin将该文件注入到作业中
echo "CurrentBranch=`ls /project/folder | grep my_name`" > /tmp/env
在jenkins作业配置中,选中"Prepare an environment for the run"复选框。
选择下面的复选框Keep Jenkins环境变量
Keep Jenkins Build Variables
echo "CurrentBranch=`ls /project/folder | grep my_name`" > /tmp/jenkins_job.prop
然后在"属性文件路径"部分,给出这个属性文件完整的路径名。
现在CurrentBranch变量将在整个构建过程中可用,并且可以使用${CurrentBranch}访问。