使用分支参数构建管道

时间:2017-11-30 04:34:00

标签: jenkins jenkins-pipeline

我似乎无法创建构建特定分支的Jenkins管道作业,其中该分支是构建参数。

以下是一些配置截图:

param config (我尝试过使用Git参数和字符串参数,结果相同)

branch config (我已尝试$BRANCH_NAME_PARAM${BRANCH_NAME_PARAM}${env.BRANCH_NAME_PARAM},所有变体的结果相同)

enter image description here

构建日志:

hudson.plugins.git.GitException: Command "git fetch --tags --progress origin +refs/heads/${BRANCH_NAME_PARAM}:refs/remotes/origin/${BRANCH_NAME_PARAM} --prune" returned status code 128:
stdout: 
stderr: fatal: Couldn't find remote ref refs/heads/${BRANCH_NAME_PARAM}

    at org.jenkinsci.plugins.gitclient.CliGitAPIImpl.launchCommandIn(CliGitAPIImpl.java:1970)

我显然做错了什么 - 关于什么的任何想法?

3 个答案:

答案 0 :(得分:27)

https://issues.jenkins-ci.org/plugins/servlet/mobile#issue/JENKINS-28447

看来它与轻量级结账有关。如果我在配置中取消选择此选项,我的参数变量将被解析

答案 1 :(得分:3)

我已经尝试了上述解决方案,但对我而言不起作用。我选择了一种略有不同的方法。我正在发布信息,因为它将在将来对某人有所帮助。

  1. 转到配置管道作业。
  2. 选中选项“此项目已参数化”
  3. 添加git参数。 注意:如果未显示该选项,请转到管理插件并安装git参数插件。
  4. 我的管道配置看起来像 enter image description here
  5. 取消选中轻量级结帐,并更新管道部分中的“要构建的分支”。 enter image description here
  6. 保存配置。

答案 2 :(得分:0)

每次我有一个基于分支的工作时,我必须放置groovy script with EnvInject plugin以删除参数中选择的git分支的ref / heads部分。

如果你保留refs/heads/xxx,Jenkins会查找分支ref/heads/ref/heads/xxx