Java 使用Jenkins工作流多分支插件拉取当前分支

Java 使用Jenkins工作流多分支插件拉取当前分支,java,git,jenkins,jenkins-workflow,Java,Git,Jenkins,Jenkins Workflow,我已经设置了Jenkins,我正在使用Jenkins工作流多分支插件。我已将其配置为在GitHub repo中侦听任何分支的提交 这是在其中一个分支中提交的Jenkinsfile的示例: node { // Mark the code checkout 'stage'.... stage 'Checkout' // Get some code from a GitHub repository git url: 'git@github.com:Me/my-repo.git

我已经设置了Jenkins,我正在使用Jenkins工作流多分支插件。我已将其配置为在GitHub repo中侦听任何分支的提交

这是在其中一个分支中提交的
Jenkinsfile
的示例:

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'

   // Get some code from a GitHub repository
   git url: 'git@github.com:Me/my-repo.git', credentialsId: '###'

   // Get the maven tool.
   // ** NOTE: This 'M3' maven tool must be configured
   // **       in the global configuration.
   def mvnHome = tool 'M3'

   stage 'Build'
   sh "${mvnHome}/bin/mvn clean install"
}
当我在此分支中提交某个内容时,将触发生成。问题是git签出的是主分支,而不是当前正在构建的分支

如何签出当前生成的分支


到目前为止的解决方案

  • 使用
    签出scm
    而不是
    git url:'git@github.com:Me/my repo.git',credentialsId:'####'
    这样您将签出当前分支
  • 使用分支变量-检查此项以了解更多信息:

  • Jenkinsfile
    中,使用
    git
    行上的
    branch
    参数添加要签出的分支的名称:

    git {...}, branch: 'branch-name'
    

    一些生成触发器设置包含分支名称的环境变量(例如,设置
    GERRIT_branch
    ),这将允许您将
    branch
    设置为该环境变量,而不是对每个分支进行硬编码。

    谢谢您的回答。我发现我可以使用
    checkout scm
    而不是
    git
    命令。它检查了当前的分支。哦,这比我的答案好多了。