さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(2)

# サーバーの現状
前回までの作業で、jenkinsをインストールして認証までの初期設定が完了した状態。
[さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(1)](http://qiita.com/inaka_phper/items/f264401ed7a0bc25f407)
作業を開始する前にプラグインのアップデートだけ先にやっといた。

# 今回やること
[前回の目指す完成形](http://qiita.com/inaka_phper/items/f264401ed7a0bc25f407#%E7%9B%AE%E6%8C%87%E3%81%99%E5%AE%8C%E6%88%90%E5%BD%A2)でいうと(3)(4)(5)の部分を今回設定する。

1. ローカルのVagrant上で開発
2. GitHubにPush(gitflow形式で運用)
3. **GitHubに設定するwebhookでjenkinsに通知**
4. **jenkinsさんがGitHubからソース落とす**
5. **jenkinsさんがテスト走らせる**
6. テスト結果をSlackのプロジェクトチャンネルに通知
7. テストOKで該当環境のDocumentRoot上にデプロイ

# GitHubと連携させる方法
jenkinsさんと何かの連携や、slackへの通知などは大体プラグインが揃っているのでありがたく利用させてもらいます。
今回はGitHub Pluginを使います。
[GitHub Plugin](https://wiki.jenkins-ci.org/display/JENKINS/Github+Plugin)

詳しい手順はこちらを参考にしました。
http://lxanders.github.io/posts/jenkins-with-github-integration/

# GitHubで設定を行う
## テスト用リポジトリの用意と設定
適当にGitHubにテスト用に作る。
README.md作っておくと楽。
作ったら「Settings」の「Webhooks & Services」から「add service」をクリック
「Jenkins (GitHub plugin)」を選択して
「Jenkins hook url」に`http://example.com:8080/github-webhook/`(自分のURL)を入力して登録しておく。

## アクセストークンを発行しておく
GitHubの[Personal access tokens](https://github.com/settings/tokens)からトークンを発行しておく必要がある。
「Generate new token」をクリックして以下の項目にチェックする。
![jenkins5.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/c709338d-1296-45b9-f96f-84da261ddfd6.jpeg)

トークンは設定後に一度だけしか表示されないので注意。
まぁ分からなくなってもEDITから画像右上の「Regenerate token」で再発行できる。

# Jenkinsで設定を行う
## プラグインをインストールする
GitHub Pluginをインストールする。

[jenkinsの管理]から[プラグインの管理]にアクセスして[利用可能]タブを選択
フィルターに「github plugin」と入れれば出てくるので、チェックボックスにチェックしてインストールする。

↓の感じで依存関係にあるものも自動で入れてくれる。
![jenkins1.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/7efc05cb-846c-9738-f9bf-25356386f985.jpeg)
「インストール完了後、ジョブが無ければJenkinsを再起動する」にチェックすると再起動される。

## GitHub Pluginの設定を行う
改めてログインしなおしてGitHub PluginにGitHubアカウントの設定を行う。
1. [jenkinsの管理]から[システムの設定]へアクセス
2. たぶん一番下に「GitHub Web Hook」があるので「Let Jenkins auto-manage hook URLs」にチェックする
![jenkins2.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/e166601a-d930-dbc1-fd75-f9b029bb69e7.jpeg)
3. API URLは空 
4. 「Username」にGitHubのユーザー名
5. 「OAuth token」に「Personal access tokens」で発行しておいたトークン
6. 「Test Credential」をクリックして「Verified」と表示されたらOK

## 新規にジョブを作る

新規ジョブ作成からジョブを作る。
1. 好きなプロジェクト名にして「フリースタイル・プロジェクトのビルド」にチェックしてOK
2. GitHub ProjectにプロジェクトURLを入れる(例：https://github.com/inaka-phper/test-jenkins-webhook)
3. ソースコード管理で「Git」にチェック
4. Repository URLにリポジトリのHTTPSのURLを入れる(例：https://github.com/inaka-phper/test-jenkins-webhook.git)
5. Branch Specifier (blank for 'any')にはテストしてデプロイしたいブランチを指定する。(例：*/master)
6. ビルドトリガで「Build when a change is pushed to GitHub」にチェック
7. ビルドで「set build status to "pendding" on GitHub commit」を選択
8. ビルド後の処理で「set build status on github commit」を選択
9. 保存
(7)、特に(8)をやっとくとテスト結果をGitHubにコミットしてくれる。

# GitHubからWebhookのテストをする
一通り設定は完了したので、先ほど登録したWebhooks & Servicesからwebhookのテストを以下の手順で動かしてみる

1. 「Settings」の「Webhooks & Services」をクリック

![jenkins7.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/b71b6dbc-5cfa-26f1-8944-f8ba219a83a3.jpeg)
2. 「Jenkins (GitHub Plugin)」をクリック
3. 右上の「Test Service」をクリックする
4. Jenkins側を確認し「ビルド履歴」が動き出したら無事設定完了
5. ログを見るとこんな感じ
![jenkins6.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/fe44883a-7642-ad36-3930-caecd5e7c5c7.jpeg)
6. GitHub上からREADME.mdを適当に編集してコミット後、jenkinsが動き出せばばっちり

# 次回は
テスト成功時にそのままhttp上にデプロイする環境構築を行う

[さくらのVPSにjenkinsをインストールして、テストOKで自動デプロイする環境を構築する(3)](http://qiita.com/inaka_phper/items/fcb46982b3b74afe1e2c)