Bitbucket と連携して自動実行する Jenkins Multibranch Pipeline ジョブの作り方

Bitbucket リポジトリへの Push を契機に、Multibranch Pipeline ジョブを実行させてみる。

目次

1. Bitbucket 上で「Bitbucket Server Webhook to Jenkins」フックを設定する

Bitbucket 側の設定は、以前の記事で紹介したモノと同じ。

2. Jenkins 上で Multibranch Pipeline ジョブを作成する

ブラウザで Jenkins のトップ画面を開き、左メニューの「新規ジョブ作成」リンクを押下する。ジョブ名を決め、「Multibranch Pipeline」を選択する。

ジョブが作成できたら、ジョブの設定画面で次のように設定し、「保存」する。

3. 対象のプロジェクト内に Jenkinsfile を作成する

Multibranch Pipeline の Jenkinsfile は、ジョブ実行対象のリポジトリ内に Jenkinsfile を配置するのが標準的な使い方。連携対象のプロジェクトルートに「Jenkinsfile」という名前のファイルを新規作成し、以下のように実装する。

pipeline {
  // エージェント : 「any」で良い
  agent any
  options {
    // ビルドの保存最大数を設定する
    buildDiscarder(logRotator(numToKeepStr: '5'))
  }
  stages {
    stage('テスト実行') {
      steps {
        // ここでは npm パッケージのテストを実行するテイ
        nodejs(configId: '【.npmrc ファイル】', nodeJSInstallationName: '【利用する Node.js】') {
          // Jenkins サーバの OS に応じて「bat」か「sh」を使用する
          bat 'npm install'
          bat 'npm test'
        }
      }
    }
  }
  post {
    always {
      // ワークスペースを削除する
      deleteDir()
    }
  }
}

Jenkinsfile が作成できたらリモートに Push しておく。

作成した Multibranch Pipeline ジョブの左メニューから「Scan Multibranch Pipeline Now」リンクを押下し、動作確認する。これで、Jenkinsfile を持つブランチが存在するか確認し、見つかればそのブランチのサブジョブを作成・実行してくれる。

なお、Push 時の自動連携は、一度ジョブを手動実行しておかないと有効にならないため、ジョブを新規作成したり、ジョブ設定を変更したりした場合は、必ず一度手動実行しておこう。

これにて完了。Multibranch Pipeline は Git チェックアウトの処理が不要になるので、Jenkinsfile が書きやすい。