Corredor

ウェブ、プログラミングの勉強メモ。

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

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

チーム開発実践入門 ~共同作業を円滑に行うツール・メソッド (WEB+DB PRESS plus)

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

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

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

neos21.hatenablog.com

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

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

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

  • Branch Sources:「Add source」→「Git」と選択し、以下の設定を入力する
  • プロジェクトリポジトリ:対象のプロジェクトの「リポジトリ URL」(「Bitbucket Server Webhook to Jenkins」フックの設定で確認できる ssh://git@ … .git 形式のもの) を指定する
  • リポジトリ・ブラウザ:「bitbucketweb」を選択する
  • URL:Bitbucket サイト上で対象のリポジトリを開き、「ナビゲーション」→「ファイル」リンクを押下した直後の URL (末尾が /browse)
  • Property strategy:「All branches get the same properties」のままとする。ブランチごとにパラメータを変更したい場合などに使用するモノ
  • Build Configuration:初期状態のまま「by Jenkinsfile」、Script Path も「Jenkinsfile」とする。対象のプロジェクト内に配置する Jenkinsfile のパスを指定する設定項目
  • 「不要アイテムの扱い」という項目があるが、Jenkinsfile 内で指定しないと有効にならないので、ここでは設定しなくて良い

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 が書きやすい。