CircleCIのNext-generation convenience images(cimg)を使ってみた

2022.04.01

こんにちは、CX事業本部 IoT事業部の若槻です。

CI/CDプラットフォームCircleCIでWorkflowを実行すると、次のようなWarningが出ていました。

You’re using a deprecated Docker convenience image. Upgrade to a next-gen Docker convenience image.

リンク先を見ると、これは実行環境にLegacy版のConvenience Imageを使っているためとのことです。

記述によると、Convenience Imageは、2020年により効率的なBuildが可能な次世代版(Next-generation)が導入され、現在はLegacy版の使用は非推奨となっていました。

In 2020 CircleCI introduced the next generation (next-gen) of convenience images. These new images are designed to replace the legacy convenience images that were released during the announcement of CircleCI 2.0. The next-gen CircleCI convenience images are designed from the ground up for a CI/CD environment. They are designed to be faster, more efficient, and most importantly, more reliable.

そこで今回は、CircleCIのNext-generation convenience images(cimg)を使ってみました。

やってみた

CircleCI Configを次のように修正し、Next-generation convenience imagesを使うようにします。Next-generationのImageは大抵の場合は接頭辞がcimg/となります。各言語のImage名はNext-gen language imagesを参考にしてください。

.circleci/config.yml

version: 2.1

executors:
  node:
    docker:
#     - image: circleci/node # Legacy
      - image: cimg/node:17.8.0 # Next-generation

Workflowを実行すると、Spin upは正常に行われ、Warningも出なくなりました!

補足

ImageのバージョンはTagで明示的に指定する必要がある

Next-generationのImageをバージョンをTagで明示的に指定せずに使用(cimg/nodeまたはcimg/node:latest)すると、エラーとなってしまいました。

.circleci/config.yml

version: 2.1

executors:
  node:
    docker:
      - image: cimg/node # バージョン指定なし

上記ConfigでWorkflowを実行するとnot foundエラーとなります。

Error response from daemon: manifest for cimg/node:latest not found: manifest unknown: manifest unknown

cimg/node - CircleCIを読むと、Imageの指定形式はバージョンが必要なようです。

cimg/node:<node-version>

LegacyのImageの時にはバージョンを明示的に指定しなくてもエラーとはならなかったため、最初このエラーに遭遇してしまいました。

おわりに

CircleCIのNext-generation convenience images(cimg)を使ってみました。

CircleCIをしばらくちゃんと使っていなかったので、キャッチアップしていきたいです。

参考

以上