我有一个詹金斯上游工作,一旦失败,它将触发下游工作,但是我需要传递相同的环境。下游作业中的上游作业变量。
我正在使用Powershell设置环境。像$env:tag=$(git describe)
这样的变量,即生成我的git标签。如何发送此环境。下游作业中使用变量,而不在下游作业中使用git url。
下游作业仅应在上游作业失败时触发。
我通过存储环境使用了触发的参数化构建插件。 txt文件(echo "$env:tag=$(git describe)" > env.txt
)中的变量,但这也不起作用。
我尝试了其他几个插件,但没有任何解决方法。
用例:JobA要传递其环境。在Powershell($ ENV:tag)中将变量设置为JobB。因此,在JobA的配置中,预定义的参数文本字段用于解析名称,但无法按预期工作。而是传递整个字符串“ $ ENV:tag”而不是“ env-value”。这是我的配置方式:
– JobA -------
预定义参数:gittag = $ ENV:tag =>将参数传递给JobB
– JobB --------
echo gittag =>输出:echo $ ENV:tag => $ ENV:tag
答案 0 :(得分:0)
,您可以使用参数化触发器插件。 这是更多详细信息的链接:https://wiki.jenkins.io/display/JENKINS/Parameterized+Trigger+Plugin
答案 1 :(得分:0)
此插件似乎是known issue。
如果仅当上游作业失败时才触发下游作业,则不要将下游作业设为参数化作业。而是将上游作业所需的变量写入下游作业的工作空间中的属性文件。
echo Var1=value>../Downstream_Job_Folder/downstream.properties
echo Var2=value>>../Downstream_Job_Folder/downstream.properties
在下游作业中,使用EnvInject Plugin作为第一步,或编写脚本从文件中读取变量。
答案 2 :(得分:0)
通过环境。紧身裤中上游到下游工作的变量
。将上游作业所需的变量写入属性(在我们的情况下 env.properties文件)文件添加到下游作业的工作区中。
echo Var1=value>../Downstream_Job_Folder/downstream.properties
echo Var2=value>>../Downstream_Job_Folder/downstream.properties
---------- IN MY CASE -------------
$PSDefaultParameterValues['Out-File:Encoding'] = 'utf8'
$commit_id=$(git rev-parse --short HEAD)
$tag=$(git describe)
echo var1=$commit_id > "C:\Program Files
(x86)\Jenkins\workspace\powershell_2\env.properties"
echo var2=$tag >> "C:\Program Files
(x86)\Jenkins\workspace\powershell_2\env.properties"
echo $commit_id
echo $tag # TO CROSS-CHECK
。在下游作业中,将EnvInject插件用作第一步,然后AND
- give Properties File Path - env.properties
。然后选择第二个构建步骤作为Windows powershell,并为Windows powershell选择 读取env.properties文件,使用以下命令
- $AppProps = convertfrom-stringdata (get-content env.properties -raw)
$AppProps.'var1' # will print the var1 value
$AppProps.'var2' # will print the var2 value
$env:commit_id=$AppProps.'var1'
$env:tag=$AppProps.'var2'
echo git:$env:tag
echo git:$env:commit_id # this will print the desired output
----------如果是Linux -------------------
。在上游工作中
- echo "name=@@" > /home/jenkins/jenkins/workspace/sh_tst_2/env.properties
- echo "age=22" >> /home/jenkins/jenkins/workspace/sh_tst_2/env.properties
。在下游作业中,将EnvInject插件用作第一步,然后AND
- give Properties File Path - env.properties
。然后选择第二个构建步骤作为LINUX SHELL