LoginSignup
17
13

More than 5 years have passed since last update.

CircleCI 2.0の設定メモ

Last updated at Posted at 2018-06-29

tl;dr

RailsプロジェクトでCIをCircleCI2.0を利用。
DBをMySQLで構築したときに疎通させるので一苦労したのでメモしておく。

環境

Ruby 2.5.1
Rails 5.2.0
MySQL 5.7

はじめに

CircleCIでプロジェクトを登録。
OSはLinuxを選択。(macOSはiOS向けのアプリとか作る用らしい(有料))
自動的にひな形が生成されるので、コピーしてアプリケーションrootに.circleci/config.ymlとして保存する。

MySQLとの疎通設定の前に

yarn installを追加

今回のプロジェクトでは、webpackerを利用しているので、jsパッケージ管理にyarnを使う。
yarnはバージョンが古くなっていると警告が出てテスト起動に失敗する(デフォルト)ので、config.ymlに追記する。(設定でバージョン監視を無効にすることも出来るが、更新したほうがいいでしょう多分。)

version:2
jobs:
  build:
    steps:
      ...
      # bundle exec rake db:createより前に書く!
      - run: yarn install

専用database.ymlの用意

テスト専用(CircleCI上で用意されるMySQL用コンテナ)で構築されるDBの設定を記述して、テスト実施前に差し替えて上げる細工が必要。

config/database.yml.ci

test:
  adapter: mysql2
  encoding: utf8
  pool: 5
  username: 'root'
  port: 3306
  host: '127.0.0.1'
  database: ci_test

で、これを差し替える細工を、.circleci/config.ymlへ追加

version:2
jobs:
  build:
    steps:
      ...
      # bundle exec rake db:createより前に書く!
      - run: yarn install

      - run: mv config/database.yml.ci config/database.yml # ココらへんに追加

      - run: bundle exec rake db:create
      - run: bundle exec rake db:schema:load

MySQLの疎通

コンテナの準備

CircleCIはdockerを使ってコンテナ単位で必要なものを起動してテストが走るので、今回はRubyが動作するコンテナと、MySQLが動作するコンテナが必要になる。
予め用意されているコンテナイメージのバージョンは、ここで確認出来る。

で、以下の感じ。

version: 2
jobs:
  build:
    docker:
       - image: circleci/ruby:2.5.1-node-browsers

       - image: circleci/mysql:5.7.22

これだけだと、いろいろとエラーが出る。
特に環境変数類が入っていないので、さらに環境変数を追加する。

       - image: circleci/ruby:2.5.1-node-browsers
         environment:
           - RAILS_ENV: 'test'

       - image: circleci/mysql:5.7.22
         environment:
           - MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
           - MYSQL_ROOT_HOST: '%'

CircleCI上で動作するテストでしか使われないので、ユーザーとか細かいことは気にしてないです。

参考程度に。

17
13
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
17
13