LoginSignup
4
4

More than 5 years have passed since last update.

Jenkins で ActiveRecord / mongoid を用いた Rails プロジェクトのテストを複数同時に実行できるようにする

Last updated at Posted at 2014-01-15

ActiveRecord や mongoid を用いたプロジェクトを Jenkins で実行する際、同じプロジェクトの spec テストを複数同時に走らせるとテストに失敗することがある。

これは、同じデータベースを複数のテストスクリプトが見てしまうのが原因なので、テストごとに異なるデータベースを見るようにする。

DB 設定ファイルの書き替え

ActiveRecord の場合

config/database.yml
test:
  database: your_awesome_app_test<%= ENV['BUILD_TAG'] %>

Mongoid の場合

config/mongoid.yml
test:
  sessions:
    default:
      hosts:
        - localhost
      database: your_awesome_app_test<%= ENV['BUILD_TAG'] %>

Jenkins が実行するシェルコマンドの書き替え

筆者は Jenkins に実行させたい処理をプロジェクトディレクトリ内にスクリプトファイルとして記述し、Jenkins のシェルスクリプト欄にはそのスクリプトの呼び出しのみを記述している。

script/jenkins-test.sh
bundle install --without production development
bundle exec rake all

# ActiveRecord の場合
RAILS_ENV=test bundle exec rake db:drop

# Mongoid の場合
RAILS_ENV=test bundle exec rake db:mongoid:drop

以上の設定を実施することで、テストの際にはビルドタグのついたデータベースが自動的に作成されるので、複数のビルドタスクが同一のデータベースを見てしまうことを防げる。

4
4
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
4
4