Bitbucket と連携して自動実行する Jenkins Multibranch Pipeline ジョブの作り方
Bitbucket リポジトリへの Push を契機に、Multibranch Pipeline ジョブを実行させてみる。
目次
- 1. Bitbucket 上で「Bitbucket Server Webhook to Jenkins」フックを設定する
- 2. Jenkins 上で Multibranch Pipeline ジョブを作成する
- 3. 対象のプロジェクト内に Jenkinsfile を作成する
- 完
1. Bitbucket 上で「Bitbucket Server Webhook to Jenkins」フックを設定する
Bitbucket 側の設定は、以前の記事で紹介したモノと同じ。
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 が書きやすい。