`env.BRANCH_NAME`成为'PR-1`

时间:2018-03-07 12:28:28

标签: jenkins github jenkins-pipeline

我们使用Jenkins管道和放大器Github Multibranch。

我参与了一个名为feature/my1stfeature的功能分支。 Jenkins作业返回了正确的分支名称:

println(env.BRANCH_NAME)返回了feature/my1stfeature

然而,只要我在Github中创建了第一个pull-request

println(env.BRANCH_NAME)返回PR-01

我当然希望得到功能分支的名称。

如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不确定,但这可能与您的分支来源有关 见https://docs.cloudbees.com/docs/admin-resources/latest/multibranch-pipeline-template-syntax-guide/github

https://docs.cloudbees.com/docs/admin-resources/latest/plugins/github-branch-source

  • 因此 GitHub 可以使用 gitHubBranchDiscovery
  • 对分支的提交做出反应
  • 它还可以使用 gitHubPullRequestDiscovery
  • 对拉取请求的提交做出反应
  • 您也可以对两者做出反应。如果您不需要,请确保您没有做出反应。
  • 您也可以对其他内容做出反应。但我们不要讨论这个:)

我猜您已经选择了:将拉取请求与当前目标分支修订版合并当前拉取请求修订版和与当前目标分支合并的拉取请求修订

<块引用>

使用发现的修订发现每个拉取请求一次 对应于与当前修订版合并的结果 目标分支。

当前拉取请求修订版

使用发现的修订版发现每个拉取请求一次 对应拉取请求头部修订,不合并。

当前拉取请求修订版和与当前目标分支修订版合并的拉取请求

发现每个拉取请求两次。第一个发现的修订版 对应于与当前修订版合并的结果 每次扫描中的目标分支。第二个平行发现的修订版 对应拉取请求头部修订,不合并。

如果您使用“将拉取请求与当前目标分支修订版合并”,那么最终会发生的是 Jenkins 按照以下格式创建另一个临时(在代理上)分支{{1}并将其与目标分支(主)合并,然后通过您的阶段

我找不到关于它如何命名为 PR-<PR-Number> 的文档,但我所看到的就是这个。

我特别提到了“另一个”,因为对于 Jenkins,如果您已经使用了 PR-<PR-Number>,那么它也会再次通过您的 gitHubBranchDiscover 到达分支。根据我的理解,您想要的是:当前的拉取请求修订

您还可以进行其他设置组合,但只需查看您的分支源并验证它是否符合您的预期。

https://www.jenkins.io/images/post-images/gsoc-gitlab-branch-source-plugin/branch-source.png

所以基本上你有一个 PR 工作和一个 branch 工作。如果您有更多的触发器,您可能会有更多的工作。通常你使用:

  • 公关工作更多地用于集成目的。它们可能会在代理上进行临时合并时发生。
  • 分支作业用于发布目的。就像您不想在每次提交 PR 时发布一样。您只希望它仅在主分支或发布分支上通过发布过程,因此您可以这样做:
Jenkinsfile