Refactor complet des pipelines CI : remplacement du docker-build.yaml monolithique par 4 workflows spécialisés, un par trigger.
Changements
Supprimé
docker-build.yaml — l'ancien workflow unique qui gérait tout (PR, push, cron)
Ajoutés
Fichier
Trigger
Hadolint
Build/Push
pr.yaml
PR → main
✅bloquant
build sans push
main.yaml
push main
✅ allow-fail
push latest + auto-tag semver
tag.yaml
push tag
✅ allow-fail
push :<tag>
cron.yaml
minuit (UTC)
✅ allow-fail
push latest + <dernier tag>
Comportement par événement
PR : Hadolint bloque si warning → build de vérification (pas de push)
Merge main : Hadolint en allow-fail → build+push latest → bump semver auto → le tag créé déclenche tag.yaml
Tag ajouté (ex: v1.2.3) : Hadolint allow-fail → build+push jcabillot/opencode:v1.2.3
Cron quotidien : rebuild latest + dernier tag pour intégrer les patchs de sécu de l'image de base (node:24-trixie)
Pas de boucle infinie
tag.yaml ne contient pas d'étape de bump semver → pas de nouveau tag créé → fin du flow.
Vérification
✅ Hadolint 2.14.0 sur le Dockerfile actuel : 0 warning, 0 erreur
✅ Toutes les actions pinées par SHA (mêmes versions que l'ancien workflow)
✅GIT_API_TAGGING: false conservé pour la compatibilité Gitea
## Résumé
Refactor complet des pipelines CI : remplacement du `docker-build.yaml` monolithique par 4 workflows spécialisés, un par trigger.
## Changements
### Supprimé
- `docker-build.yaml` — l'ancien workflow unique qui gérait tout (PR, push, cron)
### Ajoutés
| Fichier | Trigger | Hadolint | Build/Push |
|---------|---------|----------|------------|
| `pr.yaml` | PR → main | ✅ **bloquant** | build sans push |
| `main.yaml` | push main | ✅ allow-fail | push `latest` + auto-tag semver |
| `tag.yaml` | push tag | ✅ allow-fail | push `:<tag>` |
| `cron.yaml` | minuit (UTC) | ✅ allow-fail | push `latest` + `<dernier tag>` |
### Comportement par événement
- **PR** : Hadolint bloque si warning → build de vérification (pas de push)
- **Merge main** : Hadolint en allow-fail → build+push `latest` → bump semver auto → le tag créé déclenche `tag.yaml`
- **Tag ajouté** (ex: `v1.2.3`) : Hadolint allow-fail → build+push `jcabillot/opencode:v1.2.3`
- **Cron quotidien** : rebuild `latest` + dernier tag pour intégrer les patchs de sécu de l'image de base (`node:24-trixie`)
### Pas de boucle infinie
`tag.yaml` ne contient **pas** d'étape de bump semver → pas de nouveau tag créé → fin du flow.
## Vérification
- ✅ Hadolint 2.14.0 sur le Dockerfile actuel : 0 warning, 0 erreur
- ✅ Toutes les actions pinées par SHA (mêmes versions que l'ancien workflow)
- ✅ `GIT_API_TAGGING: false` conservé pour la compatibilité Gitea
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Résumé
Refactor complet des pipelines CI : remplacement du
docker-build.yamlmonolithique par 4 workflows spécialisés, un par trigger.Changements
Supprimé
docker-build.yaml— l'ancien workflow unique qui gérait tout (PR, push, cron)Ajoutés
pr.yamlmain.yamllatest+ auto-tag semvertag.yaml:<tag>cron.yamllatest+<dernier tag>Comportement par événement
latest→ bump semver auto → le tag créé déclenchetag.yamlv1.2.3) : Hadolint allow-fail → build+pushjcabillot/opencode:v1.2.3latest+ dernier tag pour intégrer les patchs de sécu de l'image de base (node:24-trixie)Pas de boucle infinie
tag.yamlne contient pas d'étape de bump semver → pas de nouveau tag créé → fin du flow.Vérification
GIT_API_TAGGING: falseconservé pour la compatibilité Gitea