船木俊介「ハッカーズランド」

スーパーソフトウエア東京オフィス代表&キッズラインCTO

GitHubとWerckerを設定する - Webサービス開発フロー(2)

前回からの続き

2.GitHubプライベートリポジトリの作成

Werckerと連携するGitHubのプライベートリポジトリを用意しておきます。WerckerはGitHubとBitbucketに対応しているので、プライベートリポジトリも無料で使えるBitbucketでもOK。リモートにpushします。

$ git remote add origin git@github.com:yourusername/rweckersample.git
$ git push -u origin master

 

3.Werckerを設定

CIサービスWerckerを使えるようにしておきます。Werckerの新規登録はこちらからできます。

rw4

ログインして、「Add Application」からCI対象のアプリを追加します。

STEP1 Choose a Git provider : GitHubを選択

wk1

STEP2 Select a repository : 先ほどGitHubにpushしたリポジトリ(今回はrwerckersample)を選択

wk2

STEP3 Configure access : Werckerがリポジトリからソースコードを取得するためのアクセス方法を設定します。デフォルトのデプロイキー追加方法でいいでしょう。

wk3

STEP4 Setup your wercker.yml : Werckerがソースコードをビルドしたりテストしたりなど、どう扱うべきかを書いたwercker.ymlをアプリケーションに追加してねということです。テキストボックスの内容をコピーして、アプリケーションのルートディレクトリにwercker.ymlファイルを作成してペーストしましょう。

wk4

STEP5 Awesome! you are all done! : 最初の設定は完了です。

wk5 wk6

Werckerのビルドを走らせる前に、先ほどのwercker.ymlを自分のアプリケーションに合わせた内容にしておきましょう。ここではmysqlを使うこととrspecを走らせる設定を追加しています。

wercker.yml

box: wercker/rvm

services:
    - wercker/mysql

# Build definition
# See the Rails section on the wercker devcenter:
# http://devcenter.wercker.com/articles/languages/ruby/settingup-rails4.html
# You will want to define your database as follows:
# services:
#   - wercker/postgresql
# See more about services on our devcenter:
# http://devcenter.wercker.com/articles/services/
build:
    steps:
        # Uncomment this to force RVM to use a specific Ruby version
        # - rvm-use:
        #       version: 2.1.5

        # A step that executes `bundle install` command
        - bundle-install

        # A step that prepares the database.yml using the database in services
        # - rails-database-yml
        - rails-database-yml:
            service: mysql

        # A custom script step, name value is used in the UI
        # and the code value contains the command that get executed
        - script:
            name: echo ruby information
            code: |
                echo "ruby version $(ruby --version) running"
                echo "from location $(which ruby)"
                echo -p "gem list: $(gem list)"

        # Add more steps here:
        # - script:
        #        name: rspec
        #        code: bundle exec rspec
        - script:
            name: Set up database
            code: RAILS_ENV=test bundle exec rake db:schema:load
        - script:
            name: Run rspec
            code: bundle exec rspec

ローカルへのコミットに続いてGitHubのリモートにpushします。そうすると、Werckerでは自動的にGitHubへのpushを検知してビルドが実行されます。リモートへpushした後に、ブラウザでWerckerを確認してみてください。

$ git add .
$ git commit -m 'add wercker.yml'
$ git push -u origin master

wk7

ビルド成功。先ほどwercker.ymlで設定したrspecも自動的に実行されてパスしています。

wk8

ここまでで、ローカルで開発して、GitHubへpushすることでコードに問題がないことを自動的にチェックする仕組みができました。続いて、AWSでサーバを立ててデプロイしていきます。