さくらVPSのDebian7.1にjenkinsを入れた 


個人で持っているサーバーが思えばcrontabぐらいしか使ってなくて、
webサーバーとしての用途は中途半端に使っているだけだったので
いっその事分けてしまおうと。
そいでcrontabだけだったらJenkins氏を雇用してみようという試み。

EC2で構築してもよかったのですが
さくらVPSのサーバーをそんなに活用していなかったし、Jenkins氏のビルド後のログ貯めておきたいからディスク容量もそこそこあるのでさくらVPSで。
さくらVPSで使っていたDebian6をOS再インストールしてJenkinsサーバーを構築
業務ではCentOSしか触っていないのですが個人のサーバーくらいはDebian使いたかったのでDebian使用。

ちなみに`Mac OS X 10.8 Mountain Lion`だとさくらVPSのOSカスタムインストール、
VNCコンソールを開くためには`Java 6`を入れておく必要がある。
[MacでさくらVPSのVNC](http://issasn.hatenablog.com/entry/2013/07/07/020102)

以後はdebian7のインストール済み&sudo権限ユーザーでsshログイン済み前提

## jenkinsインストール

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

    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://<サーバーIP>:8080`

これで完了。jenkins氏の恩恵を受けられる。
以下はもろもろの設定。設定考えるのが楽しかったりする。

## 認証

jenkins氏は基本的に誰でも心を許してしまう。
(インストール時はブラウザ上から誰でも設定を変更できる)
自分だけに従順で姿を表さないJenkins氏に調教する。
(ユーザーを作成し、そのユーザーでしかビルド実行や閲覧できないようにする)


参考
[さくらvpsでjenkinsをセットアップし、認証を行うまで](http://www.yaunix.com/2013/02/04/さくらvpsでjenkinsをセットアップし、認証を行うまで/)

topページから`Jenkinsの管理`➡`グローバルセキュリティの設定`
![スクリーンショット 2013-07-30 12.07.39.png](https://qiita-image-store.s3.amazonaws.com/0/6406/242fe16d-4a3c-8cde-7a50-5aa14d7db87e.png)


`セキュリティの有効化`にチェック
`アクセス制限`の`ユーザー情報`
`Jenkinsのユーザーデータベース`にチェックと`ユーザーにサインアップを許可`にチェック
設定を保存
![スクリーンショット 2013-07-30 12.09.37.png](https://qiita-image-store.s3.amazonaws.com/0/6406/0cbdf10a-6532-27c1-3d0a-e17948e0df3a.png)


画面右上の`サインアップ`を選択
ユーザーの作成
ここでは`soramugi`ユーザーの作成
ログインを行う。


topページから`Jenkinsの管理`➡`グローバルセキュリティの設定`
`アクセス制限`の`ユーザー情報`
`ユーザーにサインアップを許可`のチェックを外す

`アクセス制限`の`権限管理`
`行列による権限設定`にチェック
`匿名ユーザー`のチェックを全て外した状態を確認
`追加するユーザー/グループ:`に作成したユーザーを追加(ここでは`soramugi`ユーザー)
追加したユーザーのチェックを全て付ける
設定を保存
![スクリーンショット 2013-07-30 12.17.50.png](https://qiita-image-store.s3.amazonaws.com/0/6406/f319d91f-c0cc-7cfc-5e3a-90f980cda172.png)


念のためログアウトして確認、他のブラウザからアクセスして確認
完了


これで僕らだけのプライベートjenkins氏になった。

## port80のapacheでプロキシ噛ませてアクセスする場合

`http://<サーバーIP>:8080`から`http://jenkins.<ドメイン名>`でアクセス出来るようにしてかっこいいjenkins氏にする。

あらかじめ`http://jenkins.<ドメイン名>`でjenkins氏を入れたサーバーを閲覧できるようにAレコードを設定しておく。

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

    sudo apt-get install apache2
    sudo touch /etc/apache2/sites-available/jenkins
    sudo vi /etc/apache2/sites-available/jenkins

`ci.company.com`でアクセスさせる設定

```apache:/etc/apache2/sites-available/jenkins
<VirtualHost *:80>
	ServerAdmin webmaster@localhost
	ServerName ci.company.com
	ServerAlias ci
	ProxyRequests Off
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>
	ProxyPreserveHost on
	ProxyPass / http://localhost:8080/
</VirtualHost>
```

    sudo a2enmod proxy
    sudo a2enmod proxy_http
    sudo a2dissite default
    sudo a2ensite jenkins
    sudo apache2ctl restart

軽く説明すると
`/etc/apache2/sites-available/`のディレクトリの中に設定ファイルを作成。
`/etc/apache2/sites-enabled/`のディレクトリにエイリアスを張って設定を適応させる。
設定適応させたコマンドが`sudo a2ensite jenkins`
設定解除が`sudo a2dissite default`
apacheモジュールの設定も同じく。

debianのapache2の設定は基本エイリアスを張り替えてモジュールやヴァーチャルホストの設定をしたりで設定ファイルを直接編集する必要が無い。
親切設計で好きですね。

## まとめ

とりあえずこれで大体の設定は完了。
他にもgitプラグイン入れたりcurlコマンドインストールしたりメール送信の設定だったりあるけど
crontabで設定するとしても同じ作業になるだろうし、jenkinsのプラグインをいれるのはとても簡単で楽。

実行時のログも勝手に保存してくれるので定期処理ばしばし作って行きたいですねー