この稿で説明すること
Githubの任意のブランチにPushしたら、GithubからJenkinsに通知が走って
Jenkinsがそのブランチを自動的にビルドする仕組みの構築手順。
前提
- GithubはEnterprise版ではない。
- JenkinsサーバにはIPアドレスが割り当てられていて、外部からアクセスすることができる。
- Jenkinsサーバには、Githubのリポジトリからプロジェクトをフェッチしてビルドできるジョブを作成済み。
1. Jenkins側の設定
1.1. Githubプラグインのインストール
Jenkinsの管理 -> プラグインの管理 から、Githubプラグインをインストールする。
Jenkinsの案内に従って操作すれば、特に難しいことはない。
1.2. Jobの設定
Jobの設定ページの"ビルド・トリガ"という項目で
"リモートからビルド (例: スクリプトから)"
という項目にチェックを入れ、"認証トークン"欄に任意の文字列を入力する。
2. Github側の設定
2.1. Webhookの登録
プロジェクトの設定ページで "Webhooks & Services" を選択。
"Webhooks" 欄の "Add webhook" というボタンをクリックする。
"Add webhook" 欄に、以下のイメージのように入力して一番下の"Add webhook"ボタンをクリックする。
※Payload URLの書式は以下の通り(なぜか、初期値にはログインアカウントのメールアドレスが入力されているがw)。
http://[JenkinsのドメインまたはIP]/job/[ジョブ名]/build?token=[認証トークン]
※"Secret"欄は初期値のまま
前のページに戻り、"Webhooks" 欄の下に今、設定したPayload URLが表示され、その左に緑色のチェックマークが表示されていれば正しく設定されている。
Jenkinsのジョブを確認すると、Webhookを設定した時刻にビルドが走っているはず。
備考
JenkinsサーバにBasic認証をかけている場合、Payload URLを以下のように設定する。
http://[Basic認証のユーザー名]:[Basic認証のパスワード]@[JenkinsのドメインまたはIP]/job/[ジョブ名]/build?token=[認証トークン]
今回構築した仕組みは、JenkinsのGithubプラグインの"Manual mode"を使用している模様(よく分かってません(汗)。
https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin#GitHubPlugin-TriggerabuildwhenachangeispushedtoGitHub
"Automatic Mode"を使えばこれらの設定を自動で登録してくれるようなので、追々調査したい。