Jenkins 工作流作业:使用参数作为分支说明符

Jenkins workflow job: Use parameter as branch specifier

我想将我们使用分支名称作为构建参数的旧的自由风格开发构建迁移到工作流构建。 到目前为止这工作正常,我们唯一真正缺少的是使用参数的能力,例如"branch_name",作为来自 SCM 部分的 工作流脚本的分支说明符。 在自由风格的构建中,这很好用。 有什么想法可以实现吗?我们不希望开发人员在开始构建之前一直更改配置。

听起来像 JENKINS-28447:

When selecting the "Groovy CPS DSL from SCM" option for a worflow job, the SCM plugins do not appear to resolve build parameters or environment variables. I am using the git plugin and when I use it from other jobs I can specify a build parameter, like "BuildBranch", and use that when specifying what branch should be built

解决方法是使用在结帐后调用 load 的内联 bootstrap 脚本,如教程中所述。

或者,更进一步,创建一个多分支工作流项目,这样每个分支都会自动构建,并具有自己的历史记录。

我在这里描述了一个工作流 DSL 脚本:https://groups.google.com/forum/#!msg/jenkinsci-users/jSKwSKbaXq8/dG2mn6iyDQAJ

在那个脚本中,我有一个名为 FREEBSD_SRC_URL 的构建参数,它是 传递给工作流。基于 URL 中的不同参数, 可以签出不同的分支。

如果您使用的是 git,您仍然可以使用相同的技术将构建参数向下传递给脚本,但您需要做的事情略有不同。例如,您可以在作业中定义一个参数 BRANCH_NAME 并在工作流脚本中执行如下操作:

String checkout_url = "https://github.com/jenkinsci/jenkins"
String branch_name = "master"

if (getBinding().hasVariable("CHECKOUT_URL")) {
    // override default URL from build parameter
    checkout_url = CHECKOUT_URL
}
if (getBinding().hasVariable("BRANCH_NAME")) {
    // override default branch from build parameter
    branch_name = BRANCH_NAME
}

node {
    // Do the git checkout
    git branch: "${branch_name}", url: "${checkout_url}"
}

尝试禁用“轻量级结帐”复选框。

单击“轻量级结帐”选项的帮助问号时注意到此行为:

Also build parameters will not be substituted into SCM configuration in this mode.

JENKINS-28447

的最新评论中发现