我有 2 个工作:“Helper”和“Main”以及单个 jenkins 实例(即主机和执行程序)。
助手管理第 3 方资源并为 Main 作业做准备(准确地说 - 它为要部署以进行测试的应用程序创建环境)。
辅助作业的唯一工件是具有环境 IP 的单个文件,专门为 Main 作业准备。
在这种情况下,我如何将构建从 Helper 传递回 Main?
我有 2 个工作:“Helper”和“Main”以及单个 jenkins 实例(即主机和执行程序)。
助手管理第 3 方资源并为 Main 作业做准备(准确地说 - 它为要部署以进行测试的应用程序创建环境)。
辅助作业的唯一工件是具有环境 IP 的单个文件,专门为 Main 作业准备。
在这种情况下,我如何将构建从 Helper 传递回 Main?
您是说您只需将带有 IP 的文件传递给“主要”作业。如果您只需要该 IP,则有更简单的方法(无需文件),我将同时描述这两种方法。
在“Helper”作业中,您需要从工作区归档该文件。
现在,在“主要”作业中,您需要从前一个(“助手”)作业中复制此工件。
**/yourartifactname*.*
您的工件名称将是您在“助手”作业中配置的名称。在前面使用**/
确保它会在进入工件之前忽略任何目录结构现在,您的“主要”作业在其工作区中有来自“助手”作业的文件。像使用工作区中的任何其他文件一样使用它
就像我提到的那样,如果您只需要一个 IP 地址,您在“Helper”作业中的某个时间点将其作为变量,您只需使用其他项目上的 Trigger/Call 构建步骤将其发送到“Main”作业您在“Helper”作业的步骤 3 和 4 中配置的内容。在这种情况下,您不需要对“主要”作业进行任何特殊配置。
VarForMain=$VarFromHelper
,其中VarFromHelper
包含您的 IP 地址的“Helper”作业中VarForMain
的环境变量,以及将在“Main”作业中设置为此值的环境变量。没有理由为什么这些不能具有相同的名称。现在,在您的“主要”工作中,您可以$VarForMain
像引用任何其他环境变量一样引用
接受的答案对我来说没有帮助,但我想出了一个窍门:
使用 shell 命令创建一个主作业
echo "PARAMS_FILE=${WORKSPACE}/build-${BUILD_NUMBER}.params" > "${WORKSPACE}/build-${BUILD_NUMBER}.params"
通过将子作业添加到构建步骤(不是构建后的步骤)来创建子作业
将文件作为参数源传递给子构建,并让构建在其脚本中使用一行更新文件,例如:
echo "MY_VAR=some_value" >> "$PARAMS_FILE"
这样,所有后续作业的环境都会根据其前任的结果进行更新。