AmazonLinuxにJenkins導入
継続的インテグレーション(CI)
継続的インテグレーション、CI(英: continuous integration)とは、主にプログラマーのアプリケーション作成時の品質改善や納期の短縮のための習慣のことである。
エクストリーム・プログラミング (XP) のプラクティスの一つで、狭義にはビルドやテスト、インスペクションなどを継続的に実行していくことを意味する[1]。
(Wikipedia)
Jenkinsとは
Javaで書かれたCIツール。
ソフトウェアのビルドやCronで起動するジョブ等の繰り返しのジョブの実行を監視してくれる。
構築方法
確認
セキュリティグループでJenkinsで使用するポートを開けておく
カスタムTCPルール TCP 8080 IPアドレス
AmazonLinuxではデフォルトでJavaがはいっている模様
root@hoge:~# java -version
java version "1.7.0_85"
OpenJDK Runtime Environment (amzn-2.6.1.3.61.amzn1-x86_64 u85-b01)
OpenJDK 64-Bit Server VM (build 24.85-b03, mixed mode)
Jenkinsインストール
# sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo
# sudo rpm --import https://jenkins-ci.org/redhat/jenkins-ci.org.key
# sudo yum install jenkins
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Installing:
jenkins noarch 1.644-1.1 jenkins 61 M
Transaction Summary
============================================================================================================================================================================================================
Install 1 Package
バージョンとして1.644が入ります(2016/1/18 現在)
root@hoge# service jenkins start
Starting Jenkins [ OK ]
root@hoge:/tmp# service jenkins status
jenkins (pid 19989) is running...
root@hoge:/tmp# chkconfig jenkins on
Jenkins設定
・LDAP関連の設定
⇒ LDAPの設定がうまくできず断念
・Hostの設定
Jenkinsの通常のHostだと、
http://IPアドレス:8080
で、変更したとしても
http://ドメイン/jenkins
で、気持ち悪いからNginxでプロキシさせて設定した
Nginxでjenkins.hoge.comの設定を書く
server {
server_name jenkins.hoge.com;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
location / {
proxy_pass http://127.0.0.1:8080;
}
}
AWSであればRoute53にDNSを登録する
Aレコード jenkins.hoge.com IPアドレス
確認しよう!
# dig jenkins.hoge.com
http://jenkins.hoge.com
・Basic認証の設定
Jenkinsには最初に通る認証がないので、Basic認証を追加する
http://jenkins.hoge.com にアクセスしたらBasic認証が起動するようにする
ここでとりあえず、htpasswdを生成する
# vim /etc/nginx/.htpasswd
⇒ ここに先ほど生成したものを書く
jenkins.confに以下を記載する
server {
server_name jenkins.hoge.com;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Real-IP $remote_addr;
# locationをいじる
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://127.0.0.1:8080;
proxy_set_header Authorization "";
}
}
特に忘れては行けないのは
proxy_set_header Authorization "”;
で、headerにAuth情報をセットしてやらないとプロキシしているので、Jenkinsでは認証がまだな状態になってしまう、、
何につかうのか??
- 自動テスト
- Chefレポジトリの品質を保つ
- 有効期限が迫っているツールの自動更新
- Let's Encrypt の更新
- 自動Deploy
- 情報自動収集