Jenkins:在传递环境变量以用于其他作业时遇到问题(可能是一个bug)

Jenkins:在传递环境变量以用于其他作业时遇到问题(可能是一个bug),jenkins,continuous-integration,jenkins-plugins,continuous-deployment,Jenkins,Continuous Integration,Jenkins Plugins,Continuous Deployment,我似乎发现了一个错误,试图将环境变量从一个Jenkins工作传递到另一个Jenkins工作 我有一个Jenkins作业,其中包含Powershell构建步骤。我的问题不是关于Powershell脚本,因为它正是我想要的(它转到Artifactory,找到所有构建的列表,然后获取最新构建的构建编号)。脚本以文本字符串“$LATEST\u build\u NO\u SLASH”(为清楚起见,这不是Jenkins构建号)形式结束。这最终存储为一个名为“LATEST_BUILD_NUM_VAL”的环境变

我似乎发现了一个错误,试图将环境变量从一个Jenkins工作传递到另一个Jenkins工作

我有一个Jenkins作业,其中包含Powershell构建步骤。我的问题不是关于Powershell脚本,因为它正是我想要的(它转到Artifactory,找到所有构建的列表,然后获取最新构建的构建编号)。脚本以文本字符串“$LATEST\u build\u NO\u SLASH”(为清楚起见,这不是Jenkins构建号)形式结束。这最终存储为一个名为“LATEST_BUILD_NUM_VAL”的环境变量

这肯定是在创建一个环境变量,其中存储了我的值,正如“环境变量”列表中所示。

此环境变量在参数化生成步骤中以标准方式传递。

我的问题是,当我在下游版本中使用这个环境变量并使用'LATEST_build_NUM=${LATEST_build_NUM_VAL}传递它时,我会得到'${LATEST_build_NUM_VAL}'作为传递给下游作业的值:

但是,如果我传递一个Jenkins创建的环境变量,即“LATEST_BUILD_NUM=${JOB_BASE_NAME}”,我将在下游作业中获得正确的变量:

我花了一整天的时间在这件事上绞尽脑汁,真的不知道该怎么办。我似乎正确地创建了环境变量,因为它在环境变量列表中,如果我使用标准环境变量,它就会工作。我已在下游版本中将“LATEST_BUILD_NUM”声明为参数

有没有其他方法可以实现我想做的事情

我已经在“詹金斯问题”日志中查看了,找不到任何与我的问题类似的内容


如果相关,Jenkins环境注入器插件为v2.1.6,参数化触发器插件为v2.35.2。

这在Jenkins管道中很容易实现:

您的第二个作业(JobB)将从第一个作业(JobA)调用为下游作业。因此,在某个地方(可能是您的JobA管道的末端),您将有:

build job: 'CloudbeeFolder1/Path/To/JobB', propagate: false, wait: false, parameters: [[$class: 'StringParameterValue', name: 'MY_PARAM', value: "${env.SOME_VALUE}"]]
然后在“另一边”的JobB中,您有:

environment {
    PARAM_FROM_PIPELINE = "${params.MY_PARAM}"
}
这会将您的参数值输入到JobB中的环境变量中。

在生成后操作的第一个作业中-->在其他项目上触发参数化生成选择此选项 在该项目构建-->中,给出向下作业名的名称 在“添加预定义参数”中选择“添加参数”,以键值格式给出参数,例如Temp=${BUILD_ID}


在第二个作业中,选择项目在选择任何选项中参数化,例如字符串参数和put name as Temp,并在shell中或任何地方使用此参数作为$Temp…

您好,安德鲁,谢谢您的建议,但不幸的是,我们的Jenkins作业是一个更大的非Jenkins管道设置的一部分,因此我们无法仅为此转换它。