Circle CI が利用する Dokcer イメージに不具合がある場合の対処方法
まとめ
~/.circleci/build_agent_settings.json
に
cat ~/.circleci/build_agent_settings.json | jq '.LatestSha256="sha256:ae95af3e72f4b1e9d09f333deb7d5a42c6f66db4b49358973f40b4e907f9c4eb"'
の結果を置いておくと良い。
Circleci local execute fails
https://discuss.circleci.com/t/circleci-local-execute-fails/40682
と同じ症状・解決策。
経緯
知り合いのエンジニアより、Circle CI にて
circleci-demo-go $ circleci build --job build Docker image digest: sha256:70aa4e886830adb56618f6d03b96905ea5e467d58729ba136417c9f888c9652d ====>> Spin up environment Build-agent version () System information: Server Version: 20.10.7 Storage Driver: overlay2 Backing Filesystem: extfs Cgroup Driver: cgroupfs Cgroup Version: 1 Kernel Version: 5.10.25-linuxkit Operating System: Docker Desktop OSType: linux Architecture: x86_64 Starting container circleci/golang:1.12 Warning: No authentication provided, using CircleCI credentials for pulls from Docker Hub. image is cached as circleci/golang:1.12, but refreshing... 1.12: Pulling from circleci/golang Digest: sha256:ae191834590b2cdee6ca9bb6985f02e05b3f9b326536f83494f788889481b408 Status: Image is up to date for circleci/golang:1.12 Error: error starting container circleci/golang:1.12: Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option Error: Unexpected environment preparation error: Error response from daemon: --storage-opt is supported only for overlay over xfs with 'pquota' mount option Step failed Task failed
といったエラーが出たとの報告を受けた。
circleci-demo-go https://github.com/CircleCI-Public/circleci-demo-go を動かしてみるだけのものである。
Docker for mac を用いた Mac 上のトラブルだった。
Circle CI が中で呼び出しているコマンドが知りたかったが、バイナリ配布 & クローズソース なので、分からず。 いろいろやった末
circleci local execute
の直後に、
ps aux
を別のターミナルで連打するという手法をとった。
/usr/local/bin/com.docker.cli run --interactive --tty --rm --volume /var/run/docker.sock:/var/run/docker.sock --volume /tmp/293296163_circleci_config.yml:/tmp/local_build_config.yml --volume /Users/test_user/circleci/circleci-hands-on:/Users/test_user/circleci/circleci-hands-on --volume /Users/test_user/.circleci:/root/.circleci --workdir /Users/test_user/circleci/circleci-hands-on circleci/picard@sha256:70aa4e886830adb56618f6d03b96905ea5e467d58729ba136417c9f888c9652d circleci build --config /tmp/local_build_config.yml
が実行されていた。 この直後、Docker 内でエラーが出ている様子だったので、circleci/picard
が壊れているのでは、と推測した。
https://hub.docker.com/r/circleci/picard/tags から適当に探し、sha256 のハッシュ値を
a10bb09c1e8fc11aa9ffa1d6c1f2cdfb6dff9a0a87cb5c9bdd1e9be7107ec100
に変更して
docker run --tty --volume /var/run/docker.sock:/var/run/docker.sock --volume /tmp/293296163_circleci_config.yml:/tmp/local_build_config.yml --volume /Users/test_user/circleci/circleci-hands-on:/Users/test_user/circleci/circleci-hands-on --volume /Users/test_user/.circleci:/root/.circleci circleci/picard@sha256:a10bb09c1e8fc11aa9ffa1d6c1f2cdfb6dff9a0a87cb5c9bdd1e9be7107ec100 circleci build --config /tmp/local_build_config.yml
のようにしたところ、動作した。
Circle CI に問い合わせてみたらどうかと促した。
2021-07-20 に依頼者より連絡があり、
circleci/picard
の変更に伴う問題とのこと。
以下の方法で古い circleci/picard
のイメージが利用できるらしい。
circleci cli
では ~/.circleci/build_agent_settings.json
のファイルで circleci/picard
のイメージを指定しているため、その sha
を以下のようにして古いものへ変更できるようだ。
tmp=$(mktemp) && cat ~/.circleci/build_agent_settings.json | jq '.LatestSha256="sha256:ae95af3e72f4b1e9d09f333deb7d5a42c6f66db4b49358973f40b4e907f9c4eb"' > $tmp && mv $tmp ~/.circleci/build_agent_settings.json
どなたかの参考になれば。
ディスカッション
コメント一覧
まだ、コメントがありません