CircleCIの導入!
ポートフォリオにCircleCIを導入した話
Dockerに続いてCircleCIを導入しました。具体的なコードと詰まったところについて記述するので、最後まで読んでください。
具体的なコード
version: 2.1 jobs: rubocop: docker: - image: circleci/ruby:2.6.5-node-browsers-legacy environment: RAILS_ENV: test MYSQL_HOST: 127.0.0.1 - image: circleci/mysql:5.6.47 environment: BUNDLER_VERSION: 2.1.4 MYSQL_ARROW_EMPTY_PASSWORD: 'true' MYSQL_ROOT_HOST: '%' working_directory: ~/projects/reading_memo steps: - checkout - restore_cache: keys: - v1-dependencies-{{ checksum "Gemfile.lock"}} - v1-dependencies- - run: gem install bundler -v 2.1.4 - run: bundle install --jobs=4 --retry=3 --path vendor/bundle - run: yarn install - save_cache: paths: - ./vendor/bundle key: v1-dependencies-{{ checksum "Gemfile.lock"}} - run: name: Rubocop command: bundle exec rubocop rspec: docker: - image: circleci/ruby:2.6.5-node-browsers-legacy environment: RAILS_ENV: test MYSQL_HOST: 127.0.0.1 - image: circleci/mysql:5.6.47 environment: BUNDLER_VERSION: 2.1.4 MYSQL_ROOT_PASSWORD: password MYSQL_USER: root MYSQL_DB: reading_memo_test working_directory: ~/projects/reading_memo steps: - checkout - restore_cache: keys: - v1-dependencies-{{ checksum "Gemfile.lock"}} - v1-dependencies- - run: gem install bundler -v 2.1.4 - run: bundle install --jobs=4 --retry=3 --path vendor/bundle - run: yarn install - save_cache: paths: - ./vendor/bundle key: v1-dependencies-{{ checksum "Gemfile.lock"}} - run: bundle exec rake db:create - run: bundle exec rake db:schema:load - run: name: Rspec command: bundle exec rspec workflows: version: 2 rubocop_rspec: jobs: - rubocop - rspec: requires: - rubocop
発生したエラーと解決策
Could not find 'bundler' (2.1.4) required by your /home/circleci/projects/reading_memo/Gemfile.lock. (Gem::GemNotFoundException)
解決策
BUNDLER_VERSION: 2.1.4 # image: circleci/mysql:5.6.47のenvironmentのところに追加する(bundle2.0.1以上の場合bundle installに失敗するため、明示的に指定する必要がある) - run: gem install bundler -v 2.1.4 # - run: bundle install --jobs=4 --retry=3 --path vendor/bundleの上に追加する
The following cops were added to RuboCop, but are not configured.
解決策
.rubocop.ymlにNewCops: enableを追加
AccessorMethodName(Rubocop)
解決策
メソッド名の先頭のsetやgetを消去する
l Can't connect to local MySQL server through socket
解決策
test: <<: *default database: reading_memo_test host: <%= ENV['MYSQL_HOST'] %> # 追加
Can't connect to MySQL server on '127.0.0.1' (115)
解決策
environment: BUNDLER_VERSION: 2.1.4 MYSQL_ROOT_PASSWORD: password # 追加 MYSQL_USER: root MYSQL_DB: reading_memo_test
CircleCIを導入してみて
2日ぐらいかかった。基本的なことを勉強してすぐにやったことが良かった。Dockerのときは参考書とか読みすぎた。
自動化はやっぱり気持ち良い。コードとかはまだ完全には理解していないからこれからその辺りを詰めていく必要がある。
とりあえず導入できてよかった。