Skip to content

ci: gen2並列デプロイの dockerRepository クラッシュを根本修正(AR事前作成+--docker-repository明示)#136

Merged
cursor[bot] merged 1 commit into
mainfrom
cursor/fix-gen2-parallel-deploy-race-5520
Jul 1, 2026
Merged

ci: gen2並列デプロイの dockerRepository クラッシュを根本修正(AR事前作成+--docker-repository明示)#136
cursor[bot] merged 1 commit into
mainfrom
cursor/fix-gen2-parallel-deploy-race-5520

Conversation

@kojira

@kojira kojira commented Jul 1, 2026

Copy link
Copy Markdown
Member

症状

env/dev の dev-deploy 実行(ac3d323)で「deploy all Go Cloud Run functions in parallel」が失敗。10本中2本(userOGPGo/scheduledOgpDeleteGo)が同一クラッシュ:

ERROR: gcloud crashed (AttributeError): 'NoneType' object has no attribute 'dockerRepository'

直前の同一 workflow 実行(52de97b)では全10本成功しており、並列時のみ・ランダムな一部・非決定的という挙動だった。

根本原因

gen2(Cloud Run)関数のデプロイは、イメージ格納先の Artifact Registry docker リポジトリ(デフォルト gcf-artifacts)を gcloud が遅延自動解決 する。複数の gcloud functions deploy を並列実行すると、この解決処理が競合してリポジトリ参照が None になり、dockerRepository 属性アクセスでクラッシュする。GCP公式ドキュメント/SO でも AR リポジトリの事前用意と --docker-repository 明示が推奨されている。

対策(根本対応・フォールバックではない)

  1. gcf-artifacts(us-central1, docker) を 事前に冪等作成 するステップを追加。
  2. gcloud functions deploy--docker-repository=projects/<project>/locations/us-central1/repositories/gcf-artifacts明示指定し、自動解決の競合源そのものを除去。

dev-deploy.yml(project=d-shrine-dev) / prod-deploy.yml(project=d-shrine) 両方に適用。リトライ等の見かけ上の回避は入れていない。

検証

  • actionlint 両ファイルパス。
  • main → env/dev 反映で dev-deploy が再実行され、10本全て成功することを実地確認する。
Open in Web Open in Cursor 

Go関数(gen2)の並列デプロイで一部が
  gcloud crashed (AttributeError): 'NoneType' object has no attribute 'dockerRepository'
で非決定的に失敗していた(並列時のみ・ランダムな一部・前回は偶然全成功)。
原因はgcloudがイメージ格納先のArtifact Registryリポジトリ(gcf-artifacts)を
遅延自動解決する際、並列実行で解決が競合しNoneになること。
対策(根本): gcf-artifactsリポジトリを事前作成し、各deployに
--docker-repositoryを明示指定して自動解決の競合そのものを除去する。
dev/prod両方に適用。

Co-authored-by: kojira <kojira@users.noreply.github.com>
@cursor
cursor Bot merged commit 4da86ac into main Jul 1, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants