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

# サーバーの現状
これまで以下のインストール作業を行った。
[さくらのVPSにLAMP環境構築する](http://qiita.com/inaka_phper/items/b84e5f6abae6a814150a)
[さくらのVPSにphpMyAdminをインストールする](http://qiita.com/inaka_phper/items/ea59b71dc5b3f155496d)

# 目指す完成形
文字では理解し難いので図を用意してみた。
以下の構成を目指すが、今日はjenkinsのインストールと最低限の設定だけ行う。
![system.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/e92e4fbb-65db-2695-51d7-15cb87af0727.jpeg)

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


個人なので予算などなく、何から何までさくらのVPS1台で済ませる。
会社ではGitHubの代わりにGitBucketを使用。
ちゃんとjenkins＆確認用サーバーと別途本番サーバーを用意して
jenkinsでのテストOKでjenkinsで本番サーバーにSSHで入ってPullするコマンド実行させてる。

# jenkinsのインストール

公式のリポジトリがあるのでyumでインストールする
http://pkg.jenkins-ci.org/redhat/

公式のインストール手順
https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins+on+Red+Hat+distributions

書いてあるコマンドをそのまま実行

```
# sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
--2015-07-08 23:43:07--  http://pkg.jenkins-ci.org/redhat/jenkins.repo
Resolving pkg.jenkins-ci.org... 199.193.196.24
Connecting to pkg.jenkins-ci.org|199.193.196.24|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 75 [text/plain]
Saving to: `/etc/yum.repos.d/jenkins.repo'

100%[=================================================>] 75          --.-K/s   in 0s

2015-07-08 23:43:07 (11.3 MB/s) - `/etc/yum.repos.d/jenkins.repo' saved [75/75]

# sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key
```
今回は事前に鍵も入れた。

```
Dependencies Resolved

===========================================================================================
 Package             Arch               Version                  Repository           Size
===========================================================================================
Installing:
 jenkins             noarch             1.619-1.1                jenkins              60 M

Transaction Summary
===========================================================================================
Install       1 Package(s)

Total download size: 60 M
Installed size: 60 M
Is this ok [y/N]: y

Installed:
  jenkins.noarch 0:1.619-1.1

Complete!
```

インストール完了。
とりあえず起動してみる。

```
# /etc/init.d/jenkins start
Starting Jenkins bash: /usr/bin/java: No such file or directory
                                                           [FAILED]
```
失敗。java入ってなかった。

## javaをインストール

```
# yum install java

Dependencies Resolved

===========================================================================================
 Package                         Arch       Version                      Repository   Size
===========================================================================================
Installing:
 java-1.8.0-openjdk              x86_64     1:1.8.0.45-28.b13.el6_6      updates     187 k
Installing for dependencies:
 giflib                          x86_64     4.1.6-3.1.el6                base         37 k
 java-1.8.0-openjdk-headless     x86_64     1:1.8.0.45-28.b13.el6_6      updates      32 M
 jpackage-utils                  noarch     1.7.5-3.12.el6               base         59 k
 libXfont                        x86_64     1.4.5-4.el6_6                updates     137 k
 libfontenc                      x86_64     1.0.5-2.el6                  base         24 k
 ttmkfdir                        x86_64     3.0.9-32.1.el6               base         43 k
 tzdata-java                     noarch     2015e-1.el6                  updates     176 k
 xorg-x11-font-utils             x86_64     1:7.2-11.el6                 base         75 k
 xorg-x11-fonts-Type1            noarch     7.2-9.1.el6                  base        520 k

Transaction Summary
===========================================================================================
Install      10 Package(s)

Total download size: 33 M
Installed size: 104 M
Is this ok [y/N]:y

Installed:
  java-1.8.0-openjdk.x86_64 1:1.8.0.45-28.b13.el6_6

Dependency Installed:
  giflib.x86_64 0:4.1.6-3.1.el6
  java-1.8.0-openjdk-headless.x86_64 1:1.8.0.45-28.b13.el6_6
  jpackage-utils.noarch 0:1.7.5-3.12.el6
  libXfont.x86_64 0:1.4.5-4.el6_6
  libfontenc.x86_64 0:1.0.5-2.el6
  ttmkfdir.x86_64 0:3.0.9-32.1.el6
  tzdata-java.noarch 0:2015e-1.el6
  xorg-x11-font-utils.x86_64 1:7.2-11.el6
  xorg-x11-fonts-Type1.noarch 0:7.2-9.1.el6

Complete!
```
javaインストール完了。

## jenkinsを起動する

```
/etc/init.d/jenkins start
Starting Jenkins                                           [  OK  ]
```
無事起動完了、自動起動も設定しておく
`# chkconfig jenkins on`

デフォルトは8080ポートなので
`http://example.com:8080/`にアクセスしてみる
画面が表示されjenkinsのインストール完了した。
![jenkins.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/3b04d555-e33e-22a5-3585-2d666b92506f.jpeg)
※画面が表示されない場合、たぶんファイアウォールの設定かポートかぶりの可能性が高い。

# jenkinsの設定

このままではjenkinsのURLにアクセスされたら何でもありなので
以下の手順で設定変更して、jenkins用のアカウント作って制限する。
大まかな流れは以下
1. サインアップできるように設定を変更
2. アカウント作る
3. サインアップできないようにする
4. 匿名アカウントの権限全部奪い、作ったアカウントに全権限付与

上記流れを以下の手順で行う。
1. 「Jenkinsの管理」をクリック
2. 「セキュリティを設定」をクリック
![jenkins1.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/b626c5f8-904b-1a95-6ee6-02907055985c.jpeg)
3. 「セキュリティを有効化」にチェック
※以下からはお好みのを選択
4. 「Jenkinsのユーザーデータベース」にチェック
5. 「ユーザーにサインアップを許可」はチェクしたまま
6. 「ログイン済みユーザーに許可」にチェック
7. 設定を保存する
8. ログイン画面になるので「アカウントを登録」をクリック
![jenkins2.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/ab607431-d89b-adee-e89d-61b8d5798023.jpeg)
9. アカウント情報を入力して登録する
10. 「Jenkinsの管理」をクリック
11. 「グローバルセキュリティの設定」をクリック
12. 「ユーザーにサインアップを許可」のチェックを外す
13. 「行列による権限設定」にチェック変更
14. 作ったユーザー名を入力して「追加」をクリック
15. 匿名ユーザーは全部チェックなし
16. 作ったユーザー名は全部チェック(一番右のアイコンクリックで一括)
17. 保存する
18. 確認のため一度ログアウトする
19. 以下のようにログインフォームだけになればOK
![jenkins3.jpg](https://qiita-image-store.s3.amazonaws.com/0/85113/7960f14d-b863-da07-f3ca-69db2944cf59.jpeg)
20. 改めてログインして元の画面が表示されればアカウントの設定も完了

# 次回は
[GitHubにプッシュしたらjenkinsに通知する設定を行う](http://qiita.com/inaka_phper/items/f37c71b5bc0a7ba57157)