#はじめに
CircleCIを使ってSystemSpec(RSpec)とRubocopを走らせてみました。
基礎的な学習から実際に使ったソースコードをまとめたので参考になれば幸いです。
#基礎学習
教材:
入門ガイド - CircleCI
いまさらだけどCircleCIに入門したので分かりやすくまとめてみた
基本的な使い方を知るために公式で用意されている入門ガイド - CircleCIをやりました。
手を動かしながら学習できて、30分ぐらいで終わるのでおすすめです。
次に、いまさらだけどCircleCIに入門したので分かりやすくまとめてみたを読みました。
こちらの記事は、CircleCIについてかなり詳細に説明されています。
最初にざっくり読んだ後、わからないことがあったらこの記事を読み直していました。
#CircleCIの実装
参考文献
公式のCircleCI-Public/circleci-demo-ruby-railsをベースに使い、【circleCI】Railsアプリでgithubと連携してrubocopとrspecテストを走らせるを参考にしながら実装しました。
公式サンプルは最新のバージョンが使われているため、Qiitaなどの参考文献が多くはありませんでした。
今回は最新のversion: 2.1を使います。
前提
- githubのアカウントをもっていること
- 既にrailsのプロジェクトがあること
- データベースにはMysqlを使用していること。
- rspec及びrubocopはインストール、設定済み
作成するファイル
- .circleci/config.yml
- config/database.yml.ci
.circleci/config.yml
version: 2.1
orbs:
ruby: circleci/ruby@1.1.0
jobs:
build:
docker:
- image: circleci/ruby:2.5.1-node-browsers
environment:
BUNDLER_VERSION: 2.1.4
steps:
- checkout
- ruby/install-deps
test:
parallelism: 3
docker:
- image: circleci/ruby:2.5.1-node-browsers
environment:
DB_HOST: 127.0.0.1
RAILS_ENV: test
BUNDLER_VERSION: 2.1.4
- image: circleci/mysql:8.0
command: --default-authentication-plugin=mysql_native_password
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
MYSQL_ROOT_HOST: '%'
steps:
- checkout
- ruby/install-deps
- run: mv config/database.yml.ci config/database.yml
- run:
name: Wait for DB
command: dockerize -wait tcp://localhost:3306 -timeout 1m
- run: bundle exec rake db:create
- run: bundle exec rake db:schema:load
# Run rspec in parallel
- ruby/rspec-test
- ruby/rubocop-check
workflows:
version: 2
build_and_test:
jobs:
- build
- test:
requires:
- build
config/database.yml.ci
test:
adapter: mysql2
encoding: utf8
pool: 5
username: 'root'
port: 3306
host: '127.0.0.1'
database: ci_test