CircleCIのベースイメージを次世代イメージ cimg に移行する

(image)CircleCIのベースイメージを次世代イメージ cimg に移行する
目次

2020年にCircleCIの次世代イメージ・cimg が登場しました1

個人のRuby on Railsプロジェクトで、従来のcircleci/rubyから次世代イメージであるところのcimg/rubyに移行してみたので紹介します。

ベースイメージの変更

circleci/ruby から cimg/ruby へ変更します。

 executors:
   default:
     working_directory: ~/app
     docker:
+      - image: circleci/ruby:2.7-node-browsers
-      - image: cimg/ruby:2.7-browsers

CircleCI 公式 Orb の利用

今回の変更とあわせて、下記2つのCircleCI公式Orbも導入しました。

orbs:
  ruby: circleci/ruby@1.1.2
  browser-tools: circleci/browser-tools@1.1.3

RSpec の実行

上述のOrbを有効活用することで

  1. bundle Install
  2. chromedriverインストール
  3. rspecの実行

のstepを下記のようにシンプルに記述することが可能になります。

rspec:
  executor: default
  steps:
    - checkout
    - ruby/install-deps
    - browser-tools/install-chrome
    - browser-tools/install-chromedriver
    - run: bin/rails db:schema:load --trace
    - ruby/rspec-test

rubocop の実行

rubocop の実行も同様に circleci/ruby Orbに組み込まれており、簡単に実行できます。

rubocop:
  executor: default
  steps:
    - checkout
    - ruby/install-deps
    - ruby/rubocop-check

最終形

実際に circleci/ruby から cimg/ruby へと移行した Pull Request の全体像としては下記のようになります。

Migrate CircleCI image from circleci/ruby to cimg/ruby by toshimaru · Pull Request

参考リンク