More than 1 year has passed since last update.

はじめに

Travis CI上でMySQLを使う方法を調べたので自分用にメモ。公式サイトと以下のエントリを参考にさせていただきました。この記事ではRubyとRSpecを使っていますが、他の言語やテスティングフレームワークでもほぼ同じだと思います。

https://docs.travis-ci.com/user/database-setup/
http://qiita.com/suzuki86/items/e9682a242cad52003b08

設定手順

Travis CI上でユーザー名root(travisユーザーでも良いが権限がやや制限される)、パスワードなしでログインできる環境が自動的に立ち上がるため、こちら側で必要なのはテスト用データベース、テーブルの作成とdatabase.ymlの設定のみ

.travis.ymlの設定

before_scriptに直接SQLを書いてもいいのですが、今回は別ファイルから読み込ませる形にしました。

.travis.yml
language: ruby
rvm:
  - 2.2.0
before_script:
  - mysql -uroot < db/schema.sql
script: bundle exec rspec
schema.sql
CREATE DATABASE IF NOT EXISTS `database`;
USE `database`;

CREATE TABLE IF NOT EXISTS `todos` (
  `id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
  `title` TEXT NOT NULL,
  `description` TEXT NOT NULL,
  `status` INT NOT NULL,
  `created_at` DATETIME NOT NULL,
  `updated_at` DATETIME NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

database.ymlの設定

test環境の値にadapterとしてmysql2を、databaseに使用するデータベース名を、usernameにrootを指定します。

database.yml
test:
  adapter: mysql2
  database: database
  host: 127.0.0.1
  username: root
  password:
  encoding: utf8
  pool: 5

これでテストが通るはず。