env.BRANCH_NAME成为PR-1

cod*_*ith 6 github jenkins jenkins-pipeline

我们使用Jenkins管道和Github Multibranch。

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

println(env.BRANCH_NAME)返回feature/my1stfeature

但是,一旦我在Github中创建了我的第一个请求请求

println(env.BRANCH_NAME)返回PR-01

我当然想要功能分支的名称。

如何解决呢?

Hon*_*ney 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 按照以下格式创建另一个临时(在代理上)分支PR-<PR-Number>,并将其与目标分支(主)合并,然后执行你的舞台

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

我特别说“另一个”,因为对于 Jenkins,如果你使用过gitHubBranchDiscover,那么它也会再次通过你的Jenkinsfile分支。根据我的理解,你想要的是:当前的拉取请求修订

您还可以使用其他设置组合,但只需查看您的分支源并验证它是否是您所期望的。

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

所以基本上你有一份公关工作和一份分支机构工作。如果你有更多的触发因素,你可能会有更多的工作。通常你使用:

  • 公关工作更多地用于集成目的。它们可以通过代理上的临时合并来发生。
  • 用于发布目的的分支作业。就像您不想在每次提交 PR 时都发布一样。您只希望它仅在主分支或发布分支上经历发布过程,因此您可以:
stage('Release') {
  when {
    beforeAgent true
    anyOf {
      branch 'main'; branch 'release/*'
    }
  }
Run Code Online (Sandbox Code Playgroud)