检索Jenkins中下游构建的构建号或工件

Jas*_*ger 23 hudson parameterized jenkins

我在詹金斯有一份工作(称之为BIGJOB); 几个构建步骤是使用参数化触发器插件触发其他作业的构建(称为SMALLJOB),然后等待它们完成.我需要做的是从SMALLJOB上的触发构建中检索工件.

最初,我以为我可以使用Copy Artifact Plugin从触发的SMALLJOB的"last build"中检索工件.当一次只运行一个SMALLJOB时,这确实可以正常工作.

但是我运行了多个BIGJOB,都触发了多个SMALLJOB,因此使用"last build"是不可靠的,同时两个SMALLJOB完成.

是否有更可靠的方法从特定下游作业中获取工件?如果我可以获得构建号,我可以使用curl来获取构件.

tve*_*eon 29

就好在将来遇到这个问题的任何(其他)问题时:

使用参数化触发器插件作为构建步骤时,如果触发器配置为"阻止直到触发的项目完成其构建",则以下环境变量可用于进一步的构建步骤:

  • LAST_TRIGGERED_JOB_NAME ="上一个项目已启动"
  • TRIGGERED_BUILD_NUMBER_ {项目名称} ="触发的最终版本号"

从版本2.17开始

  • TRIGGERED_JOB_NAMES ="所有已触发项目的逗号分隔列表"
  • TRIGGERED_BUILD_NUMBERS_ {项目名称} ="触发的逗号分隔的构建号列表"
  • TRIGGERED_BUILD_RESULT_ {项目名称} ="上次触发的项目构建结果"
  • TRIGGERED_BUILD_RESULT_ {项目名称} RUN {build number} ="构建号码触发构建的结果"
  • TRIGGERED_BUILD_RUN_COUNT_ {项目名称} ="为项目触发的构建数量"

查看插件网站上的更多信息 - 在问题中链接.


Jas*_*ger 10

找到了我自己的答案.不像插件或已经设置的变量那么容易,但它确实有效.

使用深度= 1的Jenkins XML API(非常重要以完全遍历URL和所有可用信息)和XPATH.以下是我使用的URL示例:

http://jenkins/job/SMALLJOB/api/xml?depth=1&xpath=/freeStyleProject/build[action/cause/upstreamProject="%JOB_NAME%" and action/cause/upstreamBuild=%BUILD_ID%]/number/text()
Run Code Online (Sandbox Code Playgroud)

这将返回正确的SMALLJOB(由THIS BIGJOB启动的那个)的内部版本号.然后在Jenkins的http下载中使用该数字来获取存档的构建文件.