Jenkins如何从下游找到上游构建的内部版本号

Cri*_*scu 4 continuous-integration jenkins

我在詹金斯有两份工作:

  1. 作业A:构建源代码+运行单元测试,由SCM更改触发.这很快.它本身不会触发任何东西

  2. 作业B:构建安装程序.这需要一些时间.它是通过监视作业A的成功构建("构建其他项目后构建")来触发的.它使用来自作业A的工件.

当单个作业B正在进行时,可能会发生多个作业A构建.

Job A #1 -> triggers Job B #1
                  |
Job A #2          |
                  |
Job A #3  -.      ` Job B #1 finishes
            `-> triggers Job B #2
Job A #4          |
                  |
Job A #5          |
 |                ` Job B #2 finishes
  `-----------> triggers job B #3
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何确定A的构建数量是否触发了某个B的构建数量,因此在作业BI中可以从工作A的确切构建中复制工件?

'Copy Artifact'插件允许指定特定的内部版本号,但我从哪里获取它?

Cri*_*scu 5

当然,该选项就在 Copy Artifact 插件中...

在此处输入图片说明

  • 虽然这看起来是您为您找到的完美解决方案,但我可以补充一点,您可以使用 https://wiki.jenkins-ci.org/ 将 'A' ${BUILD_NUMBER} 环境变量传递给 'B'显示/詹金斯/参数化+构建。只是下游作业调用的 PARENT_BUILD_NUMBER 参数。 (2认同)

Zlo*_*loj 5

这是执行此操作的最简单和最便宜的方法之一:您可以使用Parametrized Build插件传递A ${BUILD_NUMBER}环境变量.例如,在B中定义变量并从中传递.BPARENT_BUILD_NUMBERPARENT_BUILD_NUMBER=$BUILD_NUMBERAB