You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
🚧 Draft — à instruire. Description courte volontairement : le périmètre, les critères
d'acceptation et le découpage en tâches restent à écrire avant de démarrer.
De quoi il s'agit
L'infrastructure d'hébergement existe (#12, PR #28), mais rien ne construit ni ne pousse d'image.
Les deux services Cloud Run servent donc l'image placeholder publique de Google, et l'Artifact
Registry provisionné est vide. Cette issue couvre le chaînon manquant : de la source à une révision
Cloud Run qui exécute le code du repo.
Ce qui existe déjà
Relevé sur pick-a-book-505922 au 2026-08-21, après l'apply de #28 et le correctif #31 :
Ready, sert us-docker.pkg.dev/cloudrun/container/hello
pick-a-book-web
Ready, sert la même image placeholder
Identités runtime
pick-a-book-api (accès Secret Manager + storage.objectCreator sur le bucket), pick-a-book-web (aucun grant)
docker/api.Dockerfile
s'annonce comme « the deployment unit (ADR 0004) »
docker/web.Dockerfile
s'annonce comme « Frontend development image: Vite dev server, hot reload »
Le module cloud-run-service porte déjà ignore_changes = [template[0].containers[0].image, client, client_version] : il attend
explicitement que l'image soit poussée hors Terraform, par le pipeline que cette issue doit créer
(c'est la raison d'être du correctif #31).
Ce qui manque
Aucun chemin d'authentification vers GCP depuis GitHub Actions. Vérifié : le repo n'a ni
secret, ni variable, ni environment. Le job terraform de la CI tourne d'ailleurs en terraform init -backend=false et mock_provider, hermétique par construction.
Aucune image de production pour le front.docker/web.Dockerfile est un Dockerfile de
développement, en toutes lettres dans son en-tête. Or l'ADR 0004 fait du front un second service
Cloud Run : il lui faut donc une image qui serve du statique via un serveur HTTP, écoutant sur le
port attendu par le module (container_port, défaut 3000).
Aucun workflow de build/push/deploy.ci.yml s'arrête aux vérifications.
À instruire
Authentification. Workload Identity Federation plutôt qu'une clé de service account en secret
longue durée — mais ça suppose de provisionner pool, provider et bindings dans infra/, et c'est
une décision structurante : ADR avant ou avec le code, selon la règle du repo. Prérequis
partagé avec ci(infra): instruire l'automatisation du terraform plan/apply — plan relu, apply derrière approbation #33 : à instruire une seule fois, en gardant deux identités distinctes (pousser
une image n'exige pas d'écrire l'état Terraform).
Déclencheur.push sur main, tag, ou déclenchement manuel ? Et faut-il une étape
d'approbation (GitHub environment avec reviewer) avant que du code atteigne la prod ?
Étiquetage des images. SHA de commit, semver, ou les deux ? Un tag mutable latest est-il
souhaitable, sachant que le module référence l'image par ce que le pipeline y met ?
De quoi il s'agit
L'infrastructure d'hébergement existe (#12, PR #28), mais rien ne construit ni ne pousse d'image.
Les deux services Cloud Run servent donc l'image placeholder publique de Google, et l'Artifact
Registry provisionné est vide. Cette issue couvre le chaînon manquant : de la source à une révision
Cloud Run qui exécute le code du repo.
Ce qui existe déjà
Relevé sur
pick-a-book-505922au 2026-08-21, après l'apply de #28 et le correctif #31 :europe-west1-docker.pkg.dev/pick-a-book-505922/pick-a-book— vide, aucune image pousséepick-a-book-apiReady, sertus-docker.pkg.dev/cloudrun/container/hellopick-a-book-webReady, sert la même image placeholderpick-a-book-api(accès Secret Manager +storage.objectCreatorsur le bucket),pick-a-book-web(aucun grant)docker/api.Dockerfiledocker/web.DockerfileLe module
cloud-run-serviceporte déjàignore_changes = [template[0].containers[0].image, client, client_version]: il attendexplicitement que l'image soit poussée hors Terraform, par le pipeline que cette issue doit créer
(c'est la raison d'être du correctif #31).
Ce qui manque
secret, ni variable, ni environment. Le job
terraformde la CI tourne d'ailleurs enterraform init -backend=falseetmock_provider, hermétique par construction.docker/web.Dockerfileest un Dockerfile dedéveloppement, en toutes lettres dans son en-tête. Or l'ADR 0004 fait du front un second service
Cloud Run : il lui faut donc une image qui serve du statique via un serveur HTTP, écoutant sur le
port attendu par le module (
container_port, défaut3000).ci.ymls'arrête aux vérifications.À instruire
longue durée — mais ça suppose de provisionner pool, provider et bindings dans
infra/, et c'estune décision structurante : ADR avant ou avec le code, selon la règle du repo. Prérequis
partagé avec ci(infra): instruire l'automatisation du terraform plan/apply — plan relu, apply derrière approbation #33 : à instruire une seule fois, en gardant deux identités distinctes (pousser
une image n'exige pas d'écrire l'état Terraform).
pushsurmain, tag, ou déclenchement manuel ? Et faut-il une étaped'approbation (GitHub
environmentavec reviewer) avant que du code atteigne la prod ?latestest-ilsouhaitable, sachant que le module référence l'image par ce que le pipeline y met ?
gcloud run deploy— cohérent avec l'ignore_changesen place — ou repasser lamain à Terraform sur l'image, ce qui reviendrait à défaire fix(infra): ignore client/client_version drift on Cloud Run services #31 ?
nx affected?gcloud run services update-traffic, et est-il documenté quelque part ?Hors périmètre
buildabsente de la CI — c'est chore(ci): aligneryarn checket la CI sur les mêmes vérifications #25, qui traite l'alignementyarn check/ CI. Cetteissue-ci suppose ce point réglé, ou au minimum ne le duplique pas.
terraform apply— c'est ci(infra): instruire l'automatisation du terraform plan/apply — plan relu, apply derrière approbation #33. Distincte : déployer une image applicative et appliquerde l'infrastructure n'ont ni le même profil de risque, ni le même garde-fou. La décision « pas de
sandbox GCP,
planrelu à la main avantapply» (infra: bootstrap GCP — projet, bucket, Cloud Run, Secret Manager (Terraform dans infra/) #12) reste en vigueur et n'est pas rouverte ici.🤖 Generated with Claude Code