LoginSignup
14
13

More than 5 years have passed since last update.

Githubの任意のブランチにPushしたら、そのブランチをJenkinsで自動的にビルドする方法

Last updated at Posted at 2015-03-07

この稿で説明すること

Githubの任意のブランチにPushしたら、GithubからJenkinsに通知が走って
Jenkinsがそのブランチを自動的にビルドする仕組みの構築手順。

前提

  • GithubはEnterprise版ではない。
  • JenkinsサーバにはIPアドレスが割り当てられていて、外部からアクセスすることができる。
  • Jenkinsサーバには、Githubのリポジトリからプロジェクトをフェッチしてビルドできるジョブを作成済み。

1. Jenkins側の設定

1.1. Githubプラグインのインストール

Jenkinsの管理 -> プラグインの管理 から、Githubプラグインをインストールする。
Jenkinsの案内に従って操作すれば、特に難しいことはない。

1.2. Jobの設定

Jobの設定ページの"ビルド・トリガ"という項目で
"リモートからビルド (例: スクリプトから)"
という項目にチェックを入れ、"認証トークン"欄に任意の文字列を入力する。

spec-build-trigger.png

2. Github側の設定

2.1. Webhookの登録

プロジェクトの設定ページで "Webhooks & Services" を選択。
"Webhooks" 欄の "Add webhook" というボタンをクリックする。

add-webhook.png

"Add webhook" 欄に、以下のイメージのように入力して一番下の"Add webhook"ボタンをクリックする。

spec-webhook.png

※Payload URLの書式は以下の通り(なぜか、初期値にはログインアカウントのメールアドレスが入力されているがw)。
http://[JenkinsのドメインまたはIP]/job/[ジョブ名]/build?token=[認証トークン]
※"Secret"欄は初期値のまま

前のページに戻り、"Webhooks" 欄の下に今、設定したPayload URLが表示され、その左に緑色のチェックマークが表示されていれば正しく設定されている。

Jenkinsのジョブを確認すると、Webhookを設定した時刻にビルドが走っているはず。

result-of-spec-webhook.png

備考

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"を使えばこれらの設定を自動で登録してくれるようなので、追々調査したい。

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13