Jenkinsの管理画面は日本語だとわかりづらいので英語設定で。
◎自動デプロイ設定までの流れ
- ユーザー作成
- ユーザー権限
- Github連携用プラグインのインストール/設定
- ジョブの作成
- ジョブへのユーザー追加
- SSH鍵の作成
- Jenkins <-> Github連携
■ユーザーの作成
- [Manage Jenkins] -> [Configure Global Security]
- "Enable security"にチェックを入れると詳細設定が開くので
- Security RealmのJenkins's own user databaseを選択
- "Allow users to sign up"をチェック
- Authorizationの"Project-based Matrix Authorization Strategy"を選択
- "admin"と"github"の2つのユーザーを作成("Add")
- adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
- githubユーザーにはOverallのReadのみ付ける
- "Save"ボタンで設定保存
"Save"をクリックするとログアウトし、ログイン画面へ飛ばされるので
"Create an account"からログインアカウントを作成する。
作成したアカウントでログイン後、先ほど作成したadminとgithubユーザーのログインアカウントを作成
■ログインアカウントの作成
- [Manage Jenkins] -> [Manage Users]
- "Create User"からadminとgithubユーザー作成
■Github連携用プラグインのインストール/設定
- [Manage Jenkins] -> [Manage Plugins]
- "Available"タブをクリック
- 次のプラグインをインストール
- Publish Over SSH Plugin
- GitHub Plugin
- GitHub API Plugin
- Git Plugin
■ジョブの作成
- TOPの"create new jobs"からジョブ作成画面へ
- ジョブを作成
- ジョブ名(プロジェクト名)を入力
- "Build a free-style software project"を選択し、"OK"ボタンを押下
■ジョブへのユーザー追加
- TOPから先ほど作成したジョブをクリック
- メニューの"Configure"をクリックして設定画面へ
- "Enable project-based security"をチェック
- "admin"と"github"の2つのユーザーを作成("Add")
- adminユーザーにはすべての権限を付ける(表右の全チェックアイコンをクリック)
- githubユーザーにはJobのReadとBuildを付ける
■SSH鍵の作成
- $ cd /var/lib/jenkins/
- jenkinsユーザーでssh設定ディレクトリ作成
$ sudo -u jenkins mkdir .ssh && sudo chmod 700 .ssh/ - 鍵作成のため、rootになる(標準では"jenkins"のシェルに入れないため)。
- ssh設定ディレクトリへ移動し、鍵作成
# cd .ssh/ && ssh-keygen -t rsa- 鍵の保存場所を下記のように指定
Enter file in which to save the key (/root/.ssh/id_rsa): /var/lib/jenkins/.ssh/id_rsa
- 鍵の保存場所を下記のように指定
- 鍵の権限をjenkinsに変更
# chown jenkins:jenkins * - 鍵の確認/Githubへの登録
- 鍵の確認
# cat /var/lib/jenkins/.ssh/id_rsa.pub - Githubの"Deoploy Keys"から確認した鍵を登録
- 鍵の確認
■Jenkins <-> Github連携
Jenkinsサーバー側
Jenkinsサーバー側
- Gitからソースを持ってくるディレクトリへ移動
$ cd /var/lib/jenkins/ - jenkinsユーザーでGithubからチェックアウト出来るか確認
$ sudo -u jenkins git clone git@github.com:hoge/hoge.git※~/.ssh/configに記述した場合はgithub.com部分をそのHost名に変更する - Jenkins管理画面のジョブでGit設定
- 対象ジョブの"Configure"から、Source Code ManagementのGitを選択
- Repository URLにGithubのssh clone urlを入力
Github側
- 対象プロジェクトの[Service Hooks]からJenkins (Git plugin)を選択
- Jenkins Urlに対象ジョブの"Build Now"リンクを貼り付けて"Update"
■おまけ(Submoduleを使っている場合)
$ sudo -u jenkins git submodule init
Submodule 'app/Plugin/Common' (https://github.com/hoge/submodule.git) registered for path 'app/Plugin/Common'
Submodule 'app/Plugin/Common' (https://github.com/hoge/submodule.git) registered for path 'app/Plugin/Common'
$ sudo -u jenkins git submodule update
git submodule updateがバージョンが古くて動かなかったので(https://help.github.com/articles/https-cloning-errors)
下記を参考に手動で最新版をインストール
http://takeshiyako.blogspot.jp/2013/01/centos-62git.html