我们已经设置了 Jenkinsjobs,其中包含几个提升步骤,反映了我们的 QS/测试工作流程。在一次推广中,我们触发了在另一台 Jenkins 主服务器上的构建。在升级构建的日志中记录了远程计算机上的作业具有哪个构建号:
This job is build #[26] on the remote server.
该版本号应该在下一个促销步骤中可用,以便将指向该版本号的 URL 设置在一起。
我现在的做法是:
让两个升级都只在主服务器上运行 在
第二个升级中,我添加了一个执行 shell 命令的操作:
crlog=${WORKSPACE}/../promotions/03-CREATE_CHANGE_REQUEST/builds/lastSuccessfulBuild/log
crbuildnr=$( grep 'This job is build #\[.*\] on the remote server.' ${crlog} | tr -d [:alpha:][:punct:][:space:])
echo "crbuildnr=${crbuildnr}" > CR-Buildnummer.txt
然后使用文件 CR-Buildnummer.txt 注入环境变量。
该解决方案的缺点是它依赖于 masters 目录结构。
是否可以在不直接从文件系统读取日志的情况下获取远程触发构建的 Buildnumber?
我已经尝试过“复制工件”,但我不知道如何命名应该从中复制工件的项目。我尝试过${PROMOTED_JOB_NAME}/promotion/03-CREATE_CHANGE_REQUEST
,因为这是环境变量 JOB_NAME 的内容。但我得到了
ERROR: Unable to find project for artifact copy: TEST_FIT_CQ_Create_FGV/promotion/03-CREATE_CHANGE_REQUEST
This may be due to incorrect project name or permission settings; see help for project name in job configuration.
我们正在使用:
jenkins 1.609.2
升级构建插件 2.24
复制工件插件 1.36