Jenkins Pipeline 中如何将上游构建号传递给下游任务

239次阅读
没有评论

问题描述

在 Jenkins Pipeline 中,有一个需求是将上游构建号传递给下游任务,以便在下游任务中下载上游构建产物。用户在使用 Pipeline 脚本时遇到了问题,希望能够得到解决。

解决方案

为了实现在 Jenkins Pipeline 中将上游构建号传递给下游任务,你可以通过以下方法来处理。

请注意以下操作可能因版本差异而有所不同,请根据实际情况进行调整。

方案1:修正参数传递

根据用户提供的脚本和问题描述,你遇到了一个错误,需要修正这个问题。在上游任务和下游任务的脚本中,确保正确地传递构建号参数。

修正上游任务脚本

在上游任务的脚本中,你需要修正参数传递的部分。在 build 阶段的参数列表中,value 参数的值应该是 env.BUILD_NUMBER,而不需要使用引号将它包围。

node {
    stage('Build parameters') {
        properties([
            parameters([
                string(
                    defaultValue: '***',
                    description: '',
                    name: 'version',
                    trim: false
                )
            ])
        ])
    }

    def Latest_Build_Number = env.BUILD_NUMBER

    build(
        job: 'Downstream',
        parameters: [
            [$class: 'StringParameterValue', name: 'Latest_Build_Number', value: env.BUILD_NUMBER, propagate: false]
        ]
    )
}

修正下游任务脚本

在下游任务的脚本中,同样需要修正参数传递的部分。确保在 properties 部分的参数列表中,value 参数的值为 env.BUILD_NUMBER,而不需要使用引号。

node {
    stage('Downstream') {
        properties([
            parameters([
                string(
                    defaultValue: '',
                    description: '',
                    name: 'Latest_Build_Number',
                    trim: false
                )
            ])
        ])

        echo Latest_Build_Number
    }
}

方案2:修复插件问题

根据用户提供的问题,你还可能遇到了插件相关的错误。如果遇到插件缺失或不兼容的情况,你可以尝试以下解决方案。

移除 ScannerJobProperty 插件

如果报错中提到了 ScannerJobProperty 插件问题,你可以尝试将它从脚本中移除。这可能是导致错误的一个原因。

在下游任务脚本中,移除下面这一行:

properties([[$class: 'ScannerJobProperty', doNotScan: false], parameters([string(defaultValue: '', description: '', name: 'Latest_Build_Number', trim: false)])])

总结

通过修正参数传递和可能存在的插件问题,你应该能够成功将上游构建号传递给下游任务。确保脚本中的参数传递部分正确无误,并根据实际情况进行调整。如果问题仍然存在,你可能需要进一步排查相关的插件兼容性或配置问题。

正文完