50回/月まで無料のCIサービスのCodeshipで
aws-specを動かした際のメモ。
1. IAMアカウントの作成
aws-specに利用させるIAMアカウントを作成します。
AWS Management Consoleの[Create New User]から
[codeship](任意)ユーザーを作成し、PolicyTemplateから[Read Only Access]を設定します。
2. aws-specをfork
GitHubにてaws-specをforkします。
3. Codeshipにサインアップ
Codeshipの[Sign in with GitHub]をクリックしてサインアップ。
4. Projectの作成
トップ画面の[Create my first project!]からプロジェクトを作成します。
- source code provider -> GitHubを選択
- repository -> forkしたaws-specを選択
セットアップ画面では以下を設定します。
Select your technology to prepopulate basic commands
Ruby
Modify your Setup Commands
rvm use 2.1.1
bundle install
Modify your Test Commands
bundle exec rspec
[SAVE AND GO TO DASHBOARD]をクリックすると
ダッシュボードに遷移しリポジトリをPushするように促されますが
これを無視して画面上部の[Choose a project…]を開き
[aws-spec]右部にある歯車アイコンを開き[Project Settings]へ遷移します。
左メニューの[Environment]から以下のとおり
作成したIAMユーザーのアクセスキー/シークレットアクセスキーを設定します。
AWS_ACCESS_KEY_ID="Provide your access key"
AWS_SECRET_ACCESS_KEY="Provide your secret key"
AWS_REGION="ap-northeast-1"
5. 実行
準備は整ったので、実際にテストを実行してみます。
試しにEC2インスタンス数が正しいかテストしてみたいと思います。
~/spec/ec2_spec.rbの編集
10行目の値を0から5に変更します。
require "spec_helper"
describe "EC2" do
ec2 = AWS::EC2.new
describe "Instances" do
subject(:instances) do
ec2.instances
end
it { should have(5).instances }
end
Push
$ git add .
$ git commit -m "change count instance"
$ git push origin master
Codeshipの確認
テストが実行され~/spec/ec2_spec.rb
の10行目が通っていることを確認します。
6. 通知
デフォルトで、実行結果はメールにて通知されます。
[Project Settings]の[Notification]をイジればHipChat/Campfire/Slack等にも通知できます。
7. まとめ
Codeshipで動いたのは良いけど、やりたかったことはPushのタイミングでテストを実行するんじゃなくて
Jenkinsのスケジュール機能みたいに、1回/日テストを実行してくれてNGだったら通知して欲しいのでコレじゃダメ。
なにやってたんだろ。ってことで別のサービスを探す。