Jenkins with GitHub OAuth Plugin のセットアップ手順

仕事で Jenkins を使ったCI環境を立ち上げたので,メモがてら手順を書いておく.
環境は さくらのVPS, OS は Debian 6.


内容的には,セキュリティの設定が完了して実際にプロジェクトを立ち上げられるまで.

Jenkins の導入

参考: https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Ubuntu

Debian 系の場合は apt-get だけで全てやってくれる.

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt-get update
sudo apt-get install jenkins

これだけでサーバが勝手に立ち上がってくれる. 楽ちん.

ブラウザで http://your-server-address:8080 にアクセスして Jenkins が立ち上がっていることを確認.
もちろん your-server-address の部分は置き換える.

セキュリティ設定

今のままだと Web 経由で誰でも自由に Jenkins をいじれるので,セキュリティを設定する.
いろいろな方法があるが,今回は Github OAuth Plugin を使った.
これを使えば独自にアカウントを管理しなくていいし, GitHub とも連携しやすくなる.

まずプラグインを導入するが, GitHub OAuth Plugin の最新版(0.13)はエンバグしているため,普通にインストールしても動かない.
そこで,必要なプラグイン( GIT Plugin や GitHub Plugin , GitHub API Plugin 辺り)をインストールし,
ついでに既存のプラグインをアップデートした後に,
https://issues.jenkins-ci.org/browse/JENKINS-16492 にある Workaround を参考に, 0.12 をインストールする.

sudo service jenkins stop
sudo rm -rf /var/lib/jenkins/plugins/github-oauth*
sudo -u jenkins curl http://updates.jenkins-ci.org/download/plugins/github-oauth/0.12/github-oauth.hpi -o /var/lib/jenkins/plugins/github-oauth.jpi
sudo service jenkins start

こんな感じ.

GitHub OAuth Plugin の 0.13 はバグってたが,最新バージョンでは修正されたため,
普通に「プラグインの管理」からインストールするのが楽.
インストールの際は,依存パッケージである GitHub API Plugin の他,
GIT Plugin や GitHub Plugin などもインストールしておくとよい.


次は GitHub の OAuth を使うためにアプリケーションを登録する.
https://github.com/settings/applications/new にアクセスし, Application Name は適当に Jenkins 辺りを設定,
Main URL には http://your-server-address:8080 を,
Callback URL には http://your-server-address:8080/securityRealm/finishLogin を,
それぞれ設定(もちろん your-server-address は適切に置き換える).
登録したら Client ID と Client Secret を確認.


あとは「Jenkinsの管理」から「グローバルセキュリティの設定」を選択,
「セキュリティを有効化」をチェックして「Github Authentication Plugin」を選択,
先ほど入手した Client ID と Client Secret を入力し,一旦保存.
保存したら右上のリンクからログインが出来るようになってるので,ログインする.
その後,「グローバルセキュリティの設定」から「Github Commiter Authorization Strategy」をチェック,
「Admin User Names」に管理権限を付与したい GitHub アカウント名をカンマ区切りで記述し,保存.
別のブラウザを使うなどして GitHub からログアウトした状態でアクセスし,アクセス出来ないことを確認する.

ひと通り設定できたので

あとは適当にプロジェクト立ち上げて試行錯誤してください.
GitHub pull request builder plugin とか便利ですよ.

補足的な

GitHub Plugin の Web-hook 機能を使う場合には, Github Commiter Authorization Strategy で
「Grant READ permissions for /github-webhook」をチェックする良いです.

追記 (25:00, 02/05)

GitHub OAuth Plugin の 0.13 がバグっている件ですが,
現在はパッチが当たったため,普通にインストールしても問題ないようです.
こちらでは まだ試してないので,実際に上手くいくかは分かりません.
追ってレビューしたいと思います.

追記 (22:00, 02/06)

現在の最新であるバージョン 0.13.1 は普通に動作するようです.
アップデートの際は,一旦プラグインを削除してから導入しないとなんか上手くいかないっぽいので注意.
プラグインを削除しても設定は残るのでごあんしんください