JenkinsにおいてGithubアカウントでログインできるようにした。
またGithubのOrganization(開発グループ的なもの)のメンバーだけがJenkinsの権限を持ってジョブを実行できるようにした。
その手順をメモしておく。
# 参照サイト
- Jenkins with GitHub OAuth Plugin のセットアップ手順 - 野良C++erの雑記帳
- Hudsonの操作権限をユーザ/グループ/ロール別に制御する - ふぞろいのGENGOたち
- Role Strategy Plugin - Jenkins - Jenkins Wiki
やってみた手順
githubアカウントでjenkinsにログイン出来るようにする
- jenkinsインストールする
- Jenkinsのプラグインに以下を追加する
- Github OAuth Plugin
- Role Strategy Plugin
- Githubにアプリを追加する
- https://github.com/settings/applications/newにアクセスし、以下のようなアプリを作成する
- Application Name、Application description:適当に設定
- Homepage URL:[Jenkins URL]
- Authorization callback URL:[Jenkins URL]/securityRealm/finishLogin
- jenkinsのグローバルセキュリティの設定を行う
- ユーザ情報をGithub Authentication Pluginにして作成したアプリのClient IDとClient Secret設定
- 権限管理をRole-Based Strategyに
Roleを設定して特定ユーザしか操作権限がないようにする
行列による権限設定でも良いけど各ユーザ毎の権限設定が面倒臭いのでRoleつくってユーザに割り当てるようにした。
- 読み取り専用のRoleを作成する
- [Jenkinsの管理] → [Manage and Assign Roles] → [Manage Roles]
- [Global roles]でread-onlyのような名前でroleを追加し、一通りのread権限を付けておく
- Roleを割り当てる
- [Jenkinsの管理] → [Manage and Assign Roles] → [Assign Roles]
- [Global roles]でAnonymousのRoleをread-onlyにする(デフォルトは全権限がある)
- 自分のGithubアカウント名をaddしてadmin権限をつける
Organizationのメンバーの操作を許可する
GithubはAPIでOrganizationの一覧取得が可能。
JenkinsはAPIでユーザ操作ができないみたい(2014/05/15時点)なのでconfig.xmlを直接編集して再起動する。(API使えたらメンバー変更後の更新とか楽なのに、、、)
- GithubのOrganizationメンバー一覧取得スクリプトを実行してメンバー一覧を取得する
git clone https://gist.github.com/1b6b9be40b3686bc94fd.git github_org_members
cd github_org_members
bundle install --path vendor/bundle
bundle exec ruby github_org_members.rb --org-name hoge | xargs -I{} -n1 echo " <sid>{}</sid>"
- 出力結果をjenkinsディレクトリのconfig.xmlに入れる(今回は手動でやった)
- <role name="admin" pattern=".*">の<assignedSIDs>の中身を出力結果と入れ替え
- jenkinsを再起動する