GeekFactory

int128.hatenablog.com

Using env.BRANCH_NAME on Jenkins Multibranch Pipeline

Jenkins Multibranch Pipelineで、ビルドの契機となったブランチに応じて固有の処理を行いたい場合があります。例えば、masterブランチがpushされた場合のみテスト環境にデプロイするといった使い方が考えられます。Travis CIの TRAVIS_BRANCH 、Circle CIの deployment: ブロックに該当する機能ですね。

Jenkins Multibranch Pipelineでは、ビルドの契機となったブランチは env.BRANCH_NAME で取得できます。

[JENKINS-30252] Provide easy access to git branch name in multibranch workflow scripts - Jenkins JIRA

Jenkinsfileで env.BRANCH_NAME の内容に応じて処理を分岐させることも可能です。

node {
  stage('Deploy') {
    if (env.BRANCH_NAME == 'master') {
      // masterブランチのみで実行したい処理
      sh './gradlew deploy'
    }
  }
}

残念ながら、tag pushを契機に固有の処理を行うことはできないようです。

[JENKINS-34395] Support for building tags - Jenkins JIRA

バージョンタグを契機にMaven Repositoryにリリースするとかできると便利なんですけどね。