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