如何在声明式管道中获取下游作业的build_number?

朱利安耶

在声明性Jenkins管道中,我需要启动作业B,获取其build_number,以便稍后可以调用另一个作业,该作业引用该特定版本中的工件。

从作业(通过管道触发)将参数/结果返回到同一管道,看起来可以在较旧的groovy Jenkinsfiles中使用,但是新的声明式语法不允许我基于“构建作业”步骤定义变量。

    stage ('Provision system testbed') {
        steps {
            build job: 'Build_Testbed', parameters: [
                string(name: 'TOPOLOGY', value: 'flat')
            ]
            **// How to we get the build_number from above?**
        }
    }

    stage ('System tests') {
        steps {
            sh """
                bundle exec rake spec:system || true
            """

            step([$class: 'JUnitResultArchiver', testResults: 'results/*.xml'])
        }
    }

    stage ('Destroy system testbed') {
        steps {
             build job: 'Destroy_Testbed', parameters: [
                string(name: 'BUILD_SELECTOR', value: '<SpecificBuildSelector plugin="[email protected]">  <buildNumber>**714**</buildNumber></SpecificBuildSelector>')
            ]
        }
    }

当然,我也欢迎完全替代的解决方案


解:

    stage ('Provision system testbed') {
        steps {
            script {
                def setupResult = build job: 'Build_Testbed', parameters: [
                    string(name: 'TOPOLOGY', value: 'flat')
                ]
                def systest_build_number = setupResult.getNumber()
                // Navigate to jenkins > Manage jenkins > In-process Script Approval
                // staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object
                env['setup_build_number'] = setupResult.getNumber()
            }
        }
    }

    stage ('System tests') {
        steps {
            sh """
                bundle exec rake spec:system || true
            """

            step([$class: 'JUnitResultArchiver', testResults: 'results/*.xml'])
        }
    }

    stage ('Destroy system testbed') {
        steps {
             build job: 'Destroy_Testbed', parameters: [
                string(name: 'BUILD_SELECTOR', value: '<SpecificBuildSelector plugin="[email protected]">  <buildNumber>${env.setup_build_number}</buildNumber></SpecificBuildSelector>')
            ]
        }
    }

注意:需要在我的Jenkins服务器中通过Jenkins>管理jenkins>进程内脚本批准来批准脚本。

staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object
伯尼特克

看起来可以在较老的groovy Jenkinsfiles中使用

您可以使用该script步骤来封装代码块,并且在此块内,声明性管道的行为基本上类似于脚本,因此仍可以使用所引用答案中描述的技术。

欢迎来到stackoverflow。我希望你在这里过得愉快。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

管道将参数传递给下游作业

计时器触发作业时如何在Jenkins中获取BUILD_USER?

如何在Jenkins中删除无法停止的管道作业?

如何获取下游项目的上游项目信息-Jenkins

如何将管道中的布尔值传递给下游作业?

如何从复杂的活动记录has_many中获取下游列表的子集的列表

如何使用声明性管道从执行的作业中复制工件?

如何在声明式管道中处理全局变量?

如何在Jenkins声明式管道中检测哪个并行阶段失败?

获取Jenkins BUILD_NUMBER变量并将其显示在angular应用程序中

如何在声明式管道中使用NodeLabel参数插件

如何读取下游作业中上游作业发送的参数?

如何将Python变量传递给管道中的下游作业

如何在声明式管道中将并行作业限制为特定的从属

如何将下游参数(例如Current build parameter)传递给Jenkins的下游作业。如何编写相同的脚本管道?

如何在Jenkins声明式管道中检查密码参数是否为空?

Jenkins-如何访问BUILD_NUMBER环境变量

如何在jQuery中获取下拉列表选项的数量

如何在Heroku管道Beta中关联下游应用程序?

如何在 Jenkins 管道作业中传递信息

Jenkins - 如何在管道作业中重放 lastSuccessfulBuild

如何在 rxjs 中向可管道操作的操作流下游传递动作数据?

如何在 gerrit 触发的詹金斯管道作业中获取提交的父 ID

无法从声明性管道触发自由式作业

如何获取上游作业在管道下游作业中运行的节点名称

Jenkins,如何在 Jenkins 声明式管道中运行 XmlParser/读取 XML

如何在 Jenkins 声明式管道中循环参数值

声明性管道作业中的 Dockerfile 失败

如何在 jenkins 管道中获取触发作业的 Build url?