gpt4 book ai didi

jenkins - 如何从 SCM 中的管道刷新作业配置

转载 作者:行者123 更新时间:2023-12-05 07:28:02 40 4
gpt4 key购买 nike

如果我将新的作业参数添加到 SCM 中保存的管道脚本,我该如何使用新参数更新 UI? (没有运行并且作业失败,因为管道尚未从 SCM 中拉出)

为了更详细,我在 SCM 中的管道脚本中添加了一个新参数,如下所示:

choice(
choices: ['github', 'bitbucket'],
description: 'Which repo to build from',
name: 'repo')

然后在UI中点击job -> 'build with parameters'。现有的参数选择不包含新参数,因为 Jenkins 尚未从 SCM 检索它。如果我现在运行它会失败(但同时它也会更新参数列表,所以下次我“使用参数构建”时它会在那里。

最佳答案

这里的主要问题是您需要基于环境变量或构建参数的管道中的可选/条件 stage。 Jenkins 声明性管道有 conditional stages , 但它们不适用于脚本化管道(Jenkinsfile 中的 groovy)。

我即兴创作了 groovy 闭包,以基于 bool 构建参数跳过实际构建阶段。

示例代码

import org.jenkinsci.plugins.pipeline.modeldefinition.Utils

/**
* Stage execution helper for skipping stages based on flag.
*
* @argument name of the stage
* @argument execute boolean flag
* @argument block to be execute if flag true
*/
def stage(name, execute, block) {
return stage(name, execute ? block : {
echo "Skipped stage $name"
Utils.markStageSkippedForConditional(STAGE_NAME)
})
}

node('master') {
try {
def parameterList = []
// additional parameters
parameterList.add(booleanParam(name: 'JUST_UPDATE_JOB_CONFIG', description: 'Just Update the configuration of this job'))
properties([
parameters(parameterList)
])
stage('Update-JobConfig', JUST_UPDATE_JOB_CONFIG == 'true') {
echo 'Updated Job Config'
}
stage('Build Stage 1', JUST_UPDATE_JOB_CONFIG != 'true') {
// some steps
}
stage('Build Stage 2', JUST_UPDATE_JOB_CONFIG != 'true') {
// some steps
}
} catch (e) {
throw e
}
}

当我在 SCM 中更改我的管道代码时,我只是在检查 JUST_UPDATE_JOB_CONFIG 参数的情况下构建作业。这里的技巧是 def stage(... 它实际上跳过了基于标志的阶段。

不确定这是否是正确的做法,但它对我有用。

关于jenkins - 如何从 SCM 中的管道刷新作业配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53615192/

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