需要将git sha传递给checkkins到Jenkins多分支管道

时间:2018-05-01 20:45:33

标签: jenkins-pipeline jenkins-declarative-pipeline

是否可以使用参数来允许用户将git sha传递给多分支管道,同时默认为分支的头部?此外,我只需要将此功能用于主分支。

我正在使用...
代码中的Jenkinsfile 詹金斯声明性管道

2 个答案:

答案 0 :(得分:0)

是的,这是可能的,但我想你必须使用脚本管道而不是声明管道。

  • 如果当前分支是主分支,则为此构建配置一个参数(因为这不是非常直观,我前一段时间写过blog article)。例如,params.INPUT_REVISION将存储给定的修订版,如果尚未指定参数(例如,对于第一次运行),您可以将默认值设置为HEAD或回退到它。

  • 您将此修订作为参数提供给checkout(scm)步骤,以便它不会检出当前的主分支,而是检查指定的修订。

答案 1 :(得分:0)

我能够使用以下的声明性管道执行此操作...

pipeline {
  options {
    skipDefaultCheckout()
  }
...
steps {
    script {
      if (GIT_REVISION=='HEAD') {
        checkout scm
      } else {
        checkout([$class: 'GitSCM',
            branches: [[name: "${params.GIT_REVISION}"]],
            doGenerateSubmoduleConfigurations: false,
            extensions: [],
            submoduleCfg: [],
            userRemoteConfigs: [[credentialsId: 'XXXXXXX', url: 'git@github.com:xxxxx/xxxxx.git']]
        ])
      }
      ...
    }
  }
}