LoginSignup
0

More than 1 year has passed since last update.

CircleCI Enterpriseでorbのaws-ecrが動かない(ことがある)

Posted at

GlobalのCircleCIで動作実績のあるaws-ecrでのデプロイJobがCircleCI Enterpriseの環境では動作しないという現象に遭遇しました。

エラーメッセージは以下

Build-agent version 1.0.114877-701271cf (2022-03-15T13:07:16+0000)
Creating a dedicated VM with ubuntu-2004:202010-01 image
failed to create host: Image ubuntu-2004:202010-01 is not supported

failed to create host: Image ubuntu-2004:202010-01 is not supported

どうやら使用しようとしているDocker Imageがサポートされていないと言われているようです。

調査

CircleCI Enterpriseは今回初めて利用しましたが、これはGitHub Enterprise同様企業のローカルネットワーク内にCircleCIのサーバーをまるごと立てたもの、と理解しています。

GlobalでのCircleCIは世界中からのCIリクエストをさばくために膨大なマシンパワー/リソースを使用していると想像しますが、企業内からのリクエストだけを捌けば良いCircleCI Enterpriseでは同等のリソースが必要なわけではなく、規模に応じたリソース割当が行われていると思われます。(今回、ゲスト的な立場だったので実際のところどうなのかは聞けておらず、半分は想像です。)

特に拡張機能などはサポートするためにはサーバ側に色々とインストールする必要があって、それなりにストレージを消費すると思われるのでサポート範囲は限定的になっているんじゃないかと思います。

実際、aws-ecrのドキュメントにリストアップされているバージョンをいくつか試しましたが、7.3.0と8.1.2以外は

Cannot find circleci/aws-ecr@6.15.3 in the orb registry. Check that the namespace, orb name and version are correct.

と、orbが見つからないというエラーになりました。
まぁaws-ecrだけでもバージョンは30個以上ありますし、はるか昔の0.xバージョンを置いておいてもストレージの無駄遣いでしかないと思うので、この辺を限定するのは妥当だと思います。

同様にDockerImageやDockerEngineのバージョンなどもある程度限定されているようです。

解決

aws-ecrのドキュメントによるとbuild-and-push-image のパラメータでexecutorremote-docker-versionを指定できるので、これらを指定することで動作しました。

こちらで動作した設定は以下

executors:
  custom-ecr:
    docker:
      - image: cimg/base:2021.07

...

      - aws-ecr/build-and-push-image:
          ...
          executor: custom-ecr
          setup-remote-docker: true
          remote-docker-version: default

前述の通り、環境によってサポートされているDockerImage/DockerEngineVersionは違うと思うので、この設定がすべてのCircleCI Enterprise環境で動作するとは限りません。

ちなみにremote-docker-versionについてはCircleCIのdocker versionドキュメントに載っているバージョンを片っ端から試しましたが、どれ一つ動作せず。。。
最終的にdocker buildが動作している別のリポのCIの実行ログと見比べてdefaultが使えるらしいらしいということがわかって、それでようやく動作しました。

思うに、これaws-ecrが変にこの辺のパラメータのデフォルト値を細かく指定しているせいで発生する現象なんですよね。。。
例えばこの辺

本家のCircleCIでdefaultという値が有効かどうかわからないのと、パラメータの指定で回避可能であるのでIssueはあげませんでしたが、もうちょっとわかりやすくならないものか?とも思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0