注意
- とりあえず、やってみた内容をメモ書き程度に
- 後から整理してまとめる
- ちなみに CI 環境って言葉をよく理解してない...
要件
- chefspec でのテストを自動化してみよう
- せっかくだから Jenkins と github を絡めて使ってみよう
設計
手順
jenkins 環境の構築
sudo wget -O /etc/yum.repos.d/jenkins.repo http://pkg.jenkins-ci.org/redhat/jenkins.repo sudo rpm --import http://pkg.jenkins-ci.org/redhat/jenkins-ci.org.key sudo yum -y install java-1.6.0-openjdk sudo yum -y install jenkins
jenkins と github との連携
jenkins ユーザーにて公開鍵の作成
cd /var/lib/jenkins sudo -u jenkins mkdir .ssh sudo -u jenkins chmod 700 .ssh sudo -u jenkins -H ssh-keygen -t rsa -C jenkins@yourdomain
EC2 の SecurityGroup の設定
github からの push 通知を受ける為に必要な IP アドレスの開放が必要な為、AWS コンソールの SecurityGroup に以下の赤枠内の IP からのアクセスを許可する設定を行う。
連携が出来ない場合等は /var/log/jenkins/jenkins.log 辺りを確認する。
chefspec のインストール
gem install chefspec --no-ri --no-rdoc
chef までインストールやってくれた。
テスト用の job 作成と実際にビルドしてみる
Jenkins にテスト用の job を作成
cd /var/lib/jenkins/workspace/${job_name} /usr/bin/rspec -fd --color ${cookbook}
※ cookbook を github のリポジトリ名にしていて、且つ、jenkins の job_name を cookbook 名にしてしまった場合には下記のようになるので注意する。
cd /var/lib/jenkins/workspace/ /usr/bin/rspec -fd --color ${cookbook}
結論、Jenkins のジョブ名は cookbook の名前と同じにしない方が良いと思う。
- github 側の WebHook URL に登録
- [ビルドの実行] URL を WebHook URL に設定する
テスト実行
- Workstation にて cookbook のレシピを修正
- git push
- Jenkins が push 通知を受け、ビルドが実行される
- テスト完了