获取Jenkins中触发项目的内部版本号

zbq4xfa0  于 2023-06-05  发布在  Jenkins
关注(0)|答案(3)|浏览(464)

我配置了一个Jenkins项目B,让它在项目A成功完成时运行。
如何在项目B管道中找到A的构建号?

ohfgkhjo

ohfgkhjo1#

如果你只需要A的last successfulbuild,你可以直接从Jenkins中读取:
如果你需要构建触发的B,你可以使用Parametized Trigger Plugin并用途:TRIGGERED_BUILD_NUMBER_MyJob=“触发的最后一个内部版本号”

8qgya5xd

8qgya5xd2#

您可以执行以下操作:
1.在构建项目A期间,使用 * 执行windows批处理 * 或 * 执行shell* 构建步骤将构建版本存储在文件中-例如从Windows批处理:

echo "VARIABLEA=%BUILD_NUMBER%" > %WORKSPACE%\myartifact.properties:

1.使用 Archive the artifacts post build步骤来针对项目A中的构建存储文件
1.在项目B开始时,使用 Copy artifacts from another project 构建步骤,指向项目A,然后使用 Artifacts to copy 字段筛选到您创建的文件,并为 Which build 字段选择 Last successful build
1.在构建项目A的过程中,读取shell脚本中的文件以获取构建号
如果以以下格式输出工件:

VARIABLEA=${BUILD_NUMBER} 
    VARIABLEB=${BUILD_NUMBER}
  • 和 * 你在Jenkins服务器上使用Linux,你可以使用 source 命令使VARIABLEA和VARIABLEB在shell会话中可用,例如:
source "${WORKSPACE}/myartifact.properties"
    echo ${VARIABLEA}

然后可以在shell脚本中对该变量执行一些操作。
或者,您可以简单地在项目A上使用 Trigger parameterized build on other projects post build步骤(我相信这需要Parameterized Trigger Plugin)并设置项目B以接受这些参数。

cotxawn7

cotxawn73#

对于管道:

pipeline{
    agent any
    stages{
        stage{"trigger job"){
            steps{
                 script{
                     triggered_build = build job:"dummy-job",
                                       waitForStart: true
                     triggered_build_number = triggered_build.getNumber()
                     echo "triggered build: ${triggered_build}
                     echo "triggered build number : ${triggered_build_number}
                 }
            }
        }
    }
}

@Venkat的荣誉,OP来自how to get the build number from a triggered job
现在,您可以在阶段中的任何位置将触发的内部版本号和内部版本名称作为变量进行访问。
注1:您需要脚本步骤来调用 .getNumber() 方法
注2:您需要 waitForStart:true or *wait:真实 *
我在这里使用build step来触发job:https://www.jenkins.io/doc/pipeline/steps/pipeline-build-step/

相关问题