CircleCI でカスタマーサクセスをしている鈴木です。椎間板ヘルニアに悩んでいます。一日1万2000歩を超えると腰の痛みが足に現れるので、Fitbitを見なくても大体の歩数がわかるようになってきました。
CircleCI が用意している CircleCI のジョブの実行環境で利用する Docker イメージをコンビニエンスイメージと呼んでいます。コンビニエンスイメージは各言語やフレームワークごとに CI/CD で必要なツールやパッケージがインストールされています。現在、Docker Hub のcimg/ に20種類ほどのイメージを確認できます。
本記事では比較的最近1公開された cimg/deploy というコンビニエンスイメージと、それをベースにした主要クラウドサービス別のイメージを紹介します。
cimg/deploy は名前からも想像できるように継続的デリバリーやデプロイでの利用を念頭においていて、kubectl や terraform などがインストールされています。さらに AWS CLI が必要であれば、cimg/deploy をベースにした cimg/aws が、gcloud CLI が必要であれば cimg/gcp が用意されています。
例えば、AWS CLIを使いたい場合、これまでのベストプラクティスはCircleCIが用意している aws-cli Orbを利用することでした。.circleci/config.yml には以下のように記述します。
version: '2.1'
orbs:
aws-cli: circleci/aws-cli@3.1.4
# 省略
jobs:
install_cli:
executor:
name: cimg/base:2023.01
steps:
- aws-cli/install
Orbを呼び出す代わりに、executor に cimg/aws を指定する記述は以下です。
version: '2.1'
# 省略
jobs:
install_cli:
executor:
name: cimg/aws:2022.11
steps:
- aws-cli/install
コード量としては大きな差がありませんが、cimg/aws を使うほうがインストールの時間を省くことができます。
と書いてみたものの、AWS CLIのインストールぐらいでは時間短縮はほとんど見られませんでした。(むしろ cimg/aws イメージの pull に時間が。。)
また、aws-cli Orb のほうが、AWSのクレデンシャルを設定する setup コマンドもあるので Orb のほうが実用的かもしれません。Orb 便利ですね。
さて、気を取り直して cimg/deploy イメージにどんなツールがインストールされているのか確認したいと思います。このイメージを作成している Dockerfile は CircleCI のパブリックな GitHub リポジトリの CircleCI-Public/cimg-deploy で確認できます。
cimg/deploy イメージはほぼ毎月更新されていくとのことで、cimg/deploy:2023.01 のように年月でタグが付けられています。リポジトリ上ではこの年月別にディレクトリが分けられています。
2023.01 ディレクトリを見てみると Dockerfile がありました。2
Dockerfile の中身を確認すると、
python3-pip, rsync, ansible, kubectl, nfpm, packer, salt-master, terraform がインストールされていることがわかりました。
これらのツールのインストールに時間がかかっている場合はお試しください。