ci(release): publie les images Docker sur le registre Forgejo #145
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/release-push-docker-images"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Contexte
La CI de release ne poussait aucune image :
release.yml'ssanity-buildfaisait undocker build -f apps/api/Dockerfile .sans push, et Portainer reconstruisait tout lui-même depuis le dépôt Git.Cette PR fait construire et publier les 3 images de service sur le registre de conteneurs intégré à Forgejo, et recâble
docker-compose.yml+ la doc pour pouvoir tirer ces images pré-construites.Changements
.github/workflows/release.ymlpermissions:+packages: write(gardecontents: write)sanity-build→build-and-push-images:docker loginsur le registre Forgejo (${GITHUB_SERVER_URL}sans le schéma) avec le token Actions du run, puis build + push de :git.dev.kyuno.fr/kyuno/batchcooking-app—apps/api/Dockerfilegit.dev.kyuno.fr/kyuno/batchcooking-intent-service—services/tech-step-intent-service/Dockerfilegit.dev.kyuno.fr/kyuno/batchcooking-llm-worker—services/tech-step-llm-worker/Dockerfiletaguées
${GITHUB_REF_NAME}(ex.v0.2.4) etlatest. Un push réussi vaut aussi la vérification « ça build encore » que faisaitsanity-build(qui ne couvrait que l'API).Job séquentiel, pas de matrix : 3
docker buildconcurrents saturent le daemon Docker du runner unique (ressource contendue d'après la mémoire projetci-forgejo-runner-constraints) sans gain réel pour une release.forgejo-release:needs:mis à jour.docker-compose.yml—image: git.dev.kyuno.fr/kyuno/batchcooking-*:${IMAGE_TAG:-latest}ajouté aux 3 services buildables,build:gardé en repli local.docker compose pullrécupère les images pré-construites ;docker compose up/buildretombe sur un build local si absentes. Portainer peut donc passer en mode pull ou garder son build-depuis-Git — les deux marchent avec le même fichier..env.example—# IMAGE_TAG=latestdocumenté.README.md— section « Pas de registre d'image » réécrite ; sous-section Release corrigée (4 jobs, noms à jour — elle disait « trois jobs » /github-release).Vérification
python -c "import yaml; yaml.safe_load(...)"surrelease.ymletdocker-compose.yml: OKsanity-build(les 2 restantes sont des commentaires historiques volontaires)dockerCLI dans l'environnement de dev (cf. mémoiredev-environment-gotchas) → pas de smoke-test build/login local possiblevX.Y.Zaprès merge : suivre le jobbuild-and-push-images, confirmer les 3 paquets surgit.dev.kyuno.fr/kyuno/-/packages(tag +latest), puisIMAGE_TAG=vX.Y.Z docker compose pull.Repli si le token de run ne peut pas pousser de paquet (politique d'instance) : créer un PAT Forgejo
write:package, l'ajouter en secret de dépôt, et l'utiliser à la place desecrets.GITHUB_TOKENdans ledocker login(une ligne à changer, noté dans le commentaire du blocpermissions:).🤖 Generated with Claude Code
Le job `sanity-build` (build de `apps/api/Dockerfile` sans push) devient `build-and-push-images` : `docker login` sur le registre Forgejo intégré via le token Actions du run (`permissions: packages: write`), puis build + push des 3 images `batchcooking-{app,intent-service,llm-worker}` taguées `vX.Y.Z` et `latest`. Un job séquentiel plutôt qu'une matrix — 3 builds concurrents saturent le daemon Docker du runner unique (cf. mémoire `ci-forgejo-runner-constraints`) sans gain réel pour une release. `docker-compose.yml` référence maintenant ces images (`image: git.dev.kyuno.fr/kyuno/batchcooking-*:${IMAGE_TAG:-latest}`) avec le bloc `build:` gardé en repli local — Portainer peut tirer les images pré-construites ou continuer à builder depuis Git. `.env.example` documente `IMAGE_TAG` ; le README (section registre + Release) est réécrit. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>