LoginSignup
9

More than 3 years have passed since last update.

CircleCIでSystemSpec(RSpec)とRubocopを走らせる

Posted at

はじめに

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

.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

config/database.yml.ci

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

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
What you can do with signing up
9