circleCIを使用してCIを導入する

#はじめに
Railsでポートフォリオ作成中にcircleCIでCIを導入してみようと言うことで、いろいろ思考錯誤して出来たので備忘録を書きたいと思います。

#環境
- Rails 5.2.4
- macOS 10.15.5
- MySQL 5.7
- ruby 2.5.1

#テスト方法
自分の場合は以下のような感じで行いましたが、絶対ほかにいい方法があると思ってます。
###gitブランチを切る
自分の場合はtestで切りました。
###変更を加えてコミット
testブランチでconfig.yml等に変更をしてコミットをすると、自動でcircleCI作動します。

#やったこと
基本[こちら](https://qiita.com/AK4747471/items/b2161784065f21cd1645)の記事を参考に実装を進めました。何点か躓いた箇所があったのでそれらを開設していきたいと思います。

###config.yml
circleCIとGitHubの連携はうまく行ったのですが、うまくビルドが成功しませんでした。

```yaml:config.yml
version: 2
jobs:
  build:
    docker:
      - image: circleci/ruby:2.5.1-node-browsers
        environment:
          # ①ここはbunder -vでバージョンをしらべて適宜変更
          - BUNDLER_VERSION: 2.1.4
          - RAILS_ENV: 'test'      
      - image: circleci/mysql:5.7
        environment:
          - MYSQL_ALLOW_EMPTY_PASSWORD: 'true'
          - MYSQL_ROOT_HOST: '%'
    working_directory: ~/repo
    steps:
      - checkout      
      - restore_cache:
          keys:
            - v1-dependencies-{{ checksum "Gemfile.lock" }}            
            - v1-dependencies-
      - run:
          name: install dependencies
          command: |       
# ②bundlerバージョンが2.0.1以上の場合、ここでbunderのバージョンを指定しないとうまくいかない     
            gem install bundler -v 2.1.4
            bundle install --jobs=4 --retry=3 --path vendor/bundle
      - save_cache:
          paths:
            - ./vendor/bundle
          key: v1-dependencies-{{ checksum "Gemfile.lock" }}
      - run: mv config/database-ci.yml config/database.yml  
      # ③master.keyをCircleCIに登録しないとエラーがでる    
      - run: bundle exec rake db:create
      - run: bundle exec rake db:schema:load
      - run:
          name: Rubocop
          command: bundle exec rubocop -a          
      - run:
          name: run tests
          command: |
            mkdir /tmp/test-results
            TEST_FILES="$(circleci tests glob "spec/**/*_spec.rb" | \
              circleci tests split --split-by=timings)"
            bundle exec rspec \
              --format progress \
              --format RspecJunitFormatter \
              --out /tmp/test-results/rspec.xml \
              --format progress \
              $TEST_FILES      
      - store_test_results:
          path: /tmp/test-results
      - store_artifacts:
          path: /tmp/test-results
          destination: test-results
```

①、②は参考にした記事通りだったので気をつければ問題ないだろう。ただ、③に関してはかなり時間を費やしてやっと[この記事](https://github.com/t-i-0414/The_Trip_Tip/issues/186)にたどり着いて解決できた。ちなみにmaster.keyの登録方法は[こちら](https://qiita.com/_AoAo_/items/125d5bdbfc7a764f1c32)を参考にした。

#rubocop
設定は[こちら](https://shuttodev.hatenablog.com/entry/2019/09/09/012953)を参考にした。まず、`rubocop --auto-correct`で自動整形を行う。ほとんど修正してくれるが、直してもらえないものもあるのでその場合は修道で直すかrubocop.ymlのExcludeに入れる。自分の場合は[ABC Sizeチェック](http://hikitest.hatenablog.com/entry/2015/01/14/034346)問い箇所が自動で修正されず手動で直しました。

#終わりに
自分のメモ用として執筆したので、かなり読みづらくまとまってなかったとおもいますが、なにかの参考になれば幸いです。

#参考リンク
http://hikitest.hatenablog.com/entry/2015/01/14/034346
https://koic.hatenablog.com/entry/extract-rails-cops-from-rubocop-core
https://shuttodev.hatenablog.com/entry/2019/09/09/012953
https://qiita.com/aiandrox/items/babfa4aba0ccf923487c
https://qiita.com/tetsuya/items/83e18713928d0b4bcc41
https://qiita.com/_AoAo_/items/125d5bdbfc7a764f1c32
https://github.com/t-i-0414/The_Trip_Tip/issues/186
https://qiita.com/AK4747471/items/b2161784065f21cd1645