2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Circleci】Circleci用のRspecのデータベースの定義

Last updated at Posted at 2022-11-12

database.yml.ciの作成

開発環境でテスト用のDBをdbという名称のコンテナで動かし、Circleciでの自動テストのDBのイメージを別途.circleci/config.ymlに記述する場合、Circleciのテストで以下のようなエラーが起こることがある。

Mysql2::Error::ConnectionError: Unknown MySQL server host 'db' (-2)

これはdbというホスト名が定義されていないため生じるものであり、Circleciでのテスト用にdatabase.ymlを用意する必要がある。
そこで、以下のファイルを.circleci配下に作成する。

circleci/database.yml.ci
test:
  adapter: mysql2
  encoding: utf8mb4
  pool: 5
  username: root
  password: password
  database: appname_test
  collation: utf8mb4_general_ci
  host: 127.0.0.1 #ホストがlocalhostになるように定義している。

config.ymlの編集

また、それに伴い、database.yml.ciの内容をCircleciでのテスト用のコンテナのdatabase.ymlにコピーしなくてはならないので、.circleci/config.ymlのワークフローにも以下の追記を行う。

.circleci/config.yml
  rspec:
    docker:
      - image: cimg/ruby:3.0.0-node
        environment:
          RAILS_ENV: test
          DB_USERNAME: root
      - image: circleci/mysql:5.6
        environment:
          - MYSQL_DATABASE: appname_test
          - MYSQL_ROOT_PASSWORD: password
          - MYSQL_ROOT_HOST: 127.0.0.1
    working_directory: ~/appname
    steps:
      - checkout
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
            - v1-dependencies-
      - run:
          name: update bundler
          command: |
            gem update --system
            gem install bundler -v 1.10.6
      - run: bundle install --jobs=4 --retry=3 --path vendor/bundle
      - save_cache:
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}-{{ checksum "yarn.lock" }}
          paths:
            - ./vendor/bundle
      - run: cp .circleci/database.yml.ci config/database.yml
      # ↑このコードを追記。
      - run: bundle exec rails db:create RAILS_ENV=test
      - run: bundle exec rails db:schema:load RAILS_ENV=test
      - run:
          name: yarn Install
          command: yarn install
      - run: bundle exec bin/webpack
      - run:
          name: RSpec
          command: bundle exec rspec
2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?