cimgとは
CircleCIの次世代convenience imageとして新しいDockerイメージが登場しておりました。
より安定性とキャッシュ効率について考えられています。
詳細はこちらのリンクを確認ください。
https://circleci.com/blog/announcing-our-next-generation-convenience-images-smaller-faster-more-deterministic/
登場したわけ
「circleci/node」はnodeのDockerfile+CircleCIのライブラリ?で構成されています。
そのため、nodeに破壊的な変更が加わると「circleci/node」がうまく起動しないことが発生しました。
それを防ぐために登場したものがcimgのイメージです。
※間違っていましたらご指摘お願いします
検証
どれくらいキャッシュ効率がいいのか試してみました。
各Nodeのイメージを使用するまでのpull時間を計測します。
(circleci側でキャッシュしているだろうという前提)
- build-node
- Dockerイメージ:Node
- build-circleci_node
- Dockerイメージ:circleci/node
- build-cimg_node
- Dockerイメージ:cimg/node
検証結果
数回実施しましたが平均的に以下のような結果になりました。
まとめ
「circleci/node」,「cimg/node」ともに早すぎてこれ以上差がつかないのかもしれない!?
登場したわけを聞いた時、今後の利用はcimg系の利用が必須ではないかなと思い、この記事を書きました。
こちらの情報(cimg)はCircleCIのユーザーコミュニティイベントで初めて聞きましたので、機会があればまた参加して色々聞いてみようかなー
皆さんもぜひこちらに参加してみてください。
では、よいCI/CDライフを!!
検証に利用したソース
ちなみに、検証に使用したソースはこちらです。
version: 2
jobs:
build-cimg_node:
docker:
- image: cimg/node:12.16
steps:
- checkout
- run: node --version
build-circleci_node:
docker:
- image: circleci/node:12.16
steps:
- checkout
- run: node --version
build-node:
docker:
- image: node:12.16
steps:
- checkout
- run: node --version
workflows:
version: 2
build_and_test:
jobs:
- build-cimg_node
- build-circleci_node
- build-node