LoginSignup
5
8

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
5
8
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
5
8