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

时间:2015-12-22 13:58:43

标签: jenkins jenkins-workflow

我想将旧的自由样式开发版本迁移到工作流程构建中,其中我们使用分支名称作为构建参数。 到目前为止这个工作正常,我们唯一真正缺少的是能够使用参数,例如“branch_name”,作为来自SCM 部分的工作流脚本的分支说明符。 在自由风格的构建上,这很好用。 任何想法如何实现这一目标?我们不希望开发人员在开始构建之前始终更改配置。

4 个答案:

答案 0 :(得分:22)

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

Lightweight checkout screenshot

JENKINS-28447

的最新评论中找到

答案 1 :(得分:2)

听起来像JENKINS-28447

  

为worflow作业选择“来自SCM的Groovy CPS DSL”选项时,   SCM插件似乎不解析构建参数或   环境变量。我正在使用git插件,当我使用它时   从其他工作我可以指定一个构建参数,如“BuildBranch”,   并在指定应该构建哪个分支时使用它

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

答案 2 :(得分:0)

我在此处描述了工作流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}"
}

答案 3 :(得分:-1)

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