ruby on railsのCircleCiで結構はまったのでメモ
データベースの接続設定
appli/config/database.yml
default: &default
adapter: mysql2
encoding: utf8
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
username: root
password:
host: localhost
test:
<<: *default
username: 'root'
password: 'rootpass'
port: 3306
host: '127.0.0.1'
database: ci_test
circleci/config.yml
# Ruby CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-ruby/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/ruby:2.6.5-node-browsers
environment:
BUNDLER_VERSION: 2.0.1
RAILS_ENV: test
DB_HOST: 127.0.0.1
DB_USERNAME: 'root'
DB_PASSWORD: 'rootpass'
- image: circleci/mysql:5.7.22
environment:
MYSQL_DATABASE: 'ci_test'
MYSQL_USER: 'root'
MYSQL_ROOT_PASSWORD: 'rootpass'
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/postgres:9.4
working_directory: ~/repo
steps:
- checkout
- run:
name: yarn install
command: yarn install
- run:
name: setup bundler
command: |
sudo gem update --system
sudo gem uninstall bundler
sudo rm /usr/local/bin/bundle
sudo rm /usr/local/bin/bundler
sudo gem install bundler
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "Gemfile.lock" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run:
name: install dependencies
command: |
yarn install --check-files
bundle install --jobs=4 --retry=3 --path vendor/bundle
- save_cache:
paths:
- ./vendor/bundle
key: v1-dependencies-{{ checksum "Gemfile.lock" }}
# Database setup
- run:
name: bundle exec
command: |
dockerize -wait tcp://127.0.0.1:3306 -timeout 120s
bundle exec rake db:create
bundle exec rake db:schema:load
# run tests!
- run:
name: run tests
command: |
mkdir /tmp/test-results
TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
circleci tests split --split-by=timings)"
sudo gem install bundler
sudo gem install rspec
sudo gem install rspec-core
bundle exec rspec \
--format progress \
--format RspecJunitFormatter \
--out /tmp/test-results/rspec.xml \
--format progress \
$TEST_FILES
# collect reports
- store_test_results:
path: /tmp/test-results
- store_artifacts:
path: /tmp/test-results
destination: test-results