Codeshipでaws-spec実行する

Posted by @kachina_t on Sun, May 11, 2014
In Development
Tags development

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だったら通知して欲しいのでコレじゃダメ。

なにやってたんだろ。ってことで別のサービスを探す。