LoginSignup
21
19

More than 5 years have passed since last update.

WerckerでRailsのCIを回す

Posted at

Werkerとは

CIサービスはいろいろとあるんですが、BitbucketのPrivateリポジトリで無料でCIを回したくてWerckerを使ってみることにしました。

ymlに設定を書くんですが、書き方がちょっと前に変わったらしく、調べても古い情報と新しい情報が混在していてなかなかに苦戦したのでメモ程度ですが書き残しておきます。

最終的な動作環境

早速ですがまず最終的な設定を晒しておきます。
今回使ったデータベースはMySQLです。

設定ファイル

以下の設定で動きました。(mysqlの環境変数は適当です)

box: phusion/passenger-ruby22
services:
  - id: mysql
    env:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_USER: test_user
      MYSQL_PASSWORD: test_password
      MYSQL_DATABASE: test_database
build:
  steps:
    - bundle-install
    - rails-database-yml
    - script:
        name: rspec
        code: bundle exec rspec

環境変数

Werckerでは、Applicationの設定から環境変数を設定出来ます。
僕の環境でCIを回すにあたって必要だった環境変数は以下のみでした。

WERCKER_BUNDLE_INSTALL_WITHOUT: development production

bundle install--without development production を付けるための環境変数です。

必要かどうかはprojectで使っているgemによりますが、僕の場合 development,production では sql-server を使い、test では mysql を使いたかったため、 sql-server関連のgemを避けないとfailするという問題があったため必要でした。

基本的なプロジェクトでは必要ないと思います。

ちなみにソースは以下の部分です

設定ファイルの項目について

box

Rubyのdockerイメージを選択します。
これはwerckerのREADMEで使われているものをそのまま使用しました。

service

データベースを使う場合、serviceにデータベース用のdockerイメージを選択します。
また、データベースの設定はenvオプションに書きます。

bundle-install

railsプロジェクトの依存ライブラリのインストールします。普通のbundle installです。

rails-database-yml

serviceで設定したenvを元にdatabase.ymlを生成します。
これがないとmysqlに接続出来なくてfailします。

rspec

最後に、scriptでrspecを実行します。

上記の設定で失敗する場合

上の設定で何度か成功したのですが、急にmysqlに接続できなくなってfailするようになりました。
以下の設定をbundle-installの前に入れることで動くようになりました。

- script:
  name: delete docker images cache
  code: |
    rm -rf $WERCKER_CACHE_DIR

詳細分かりませんが、キャッシュが悪さをしていたようです。

21
19
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
19