gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 01:49:48 24 4
gpt4 key购买 nike

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

Return parameters/results from a job(triggered by pipeline) back to the same pipeline看起来它可以在旧的 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="copyartifact@1.38.1"> <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="copyartifact@1.38.1"> <buildNumber>${env.setup_build_number}</buildNumber></SpecificBuildSelector>')
]
}
}

注意:需要在 Jenkins > Manage jenkins > In-process Script Approval 处批准我的 Jenkins 服务器中的脚本
staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods putAt java.lang.Object java.lang.String java.lang.Object

最佳答案

looks like it would work in the older groovy Jenkinsfiles



您可以使用 script包含一段代码的步骤,并且在此 block 内,声明性管道基本上就像脚本一样,因此您仍然可以使用您引用的答案中描述的技术。

欢迎来到stackoverflow。我希望你在这里玩得开心。

关于jenkins - 如何在声明性管道中获取下游作业的 build_number?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45382321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com