release.yaml utilisait GITHUB_TOKEN pour le tag : tag créé mais ne déclenchait jamais de workflow downstream. Remplacé par le PAT SA_TOKEN_ACTION_PUSH_TAGS (déjà au niveau org perso, utilisé par mydl).
Supprimé : docker-build.yaml (absorbé), release.yaml (absorbé dans main.yaml), test.yaml (absorbé dans _ci-common + pr).
Smoke test adapté à ce repo : python -c "import src.server" dans le conteneur (pas de tests/test.sh ici).
Aligne le pipeline CI/CD de mcp-ics sur le pattern web/mydl.
## Nouvelle architecture
| Fichier | Déclencheur | Rôle |
|---|---|---|
| `pr.yaml` | PR vers main | checks : hadolint + build + smoke `docker run` |
| `main.yaml` | push main | CI + build local + **tag git semver** (patch par défaut, `#minor`/`#major` dans le message de merge pour bump) |
| `tag.yaml` | push de tag | CI + build/push `:vX.Y.Z` et `:vX.Y.Z-latest` — **seule source de push Docker** |
| `cron.yaml` | 0 0 * * * | rebuild nightly de `:vX.Y.Z-latest` (patchs de sécurité) |
| `_ci-common.yaml` | workflow_call | jobs partagés : hadolint (step-level continue-on-error) + build-test avec cache GHA |
## Changements clés vs avant
- **Fini `:latest` à chaque merge** : Docker n'est poussé qu'au push de tag, après tests verts.
- **Vrais tags versionnés** `jcabillot/mcp-ics:vX.Y.Z` (stables, immuables) + `:vX.Y.Z-latest` (rebuild nightly).
- `release.yaml` utilisait `GITHUB_TOKEN` pour le tag : tag créé mais ne déclenchait jamais de workflow downstream. Remplacé par le PAT `SA_TOKEN_ACTION_PUSH_TAGS` (déjà au niveau org perso, utilisé par mydl).
- Supprimé : `docker-build.yaml` (absorbé), `release.yaml` (absorbé dans main.yaml), `test.yaml` (absorbé dans _ci-common + pr).
- Smoke test adapté à ce repo : `python -c "import src.server"` dans le conteneur (pas de tests/test.sh ici).
Split the monolithic docker-build/release/test workflows into the shared
_ci-common.yaml + trigger-specific files used on web/mydl:
- pr.yaml -> PR checks (hadolint + build smoke test)
- main.yaml -> CI + local build + git semver tag (PAT, triggers tag.yaml)
- tag.yaml -> CI + build/push :vX.Y.Z and :vX.Y.Z-latest (sole Docker push)
- cron.yaml -> nightly rebuild of :vX.Y.Z-latest
- _ci-common.yaml -> hadolint + build-test with docker smoke and GHA cache
Docker pushes to :latest on every merge are replaced by versioned,
tested tags. The tag job uses SA_TOKEN_ACTION_PUSH_TAGS (a PAT) so the
tag push actually triggers tag.yaml - GITHUB_TOKEN would not.
opencodecabilloteu
requested review from jcabillot 2026-10-08 16:31:11 -04:00
Smoke test initial (import src.server) echouait : server.py leve ValueError au sans CALDAV_DATA_PATH. Remplace par python -m compileall -q src/ (valide la syntaxe sans executer le module). CI: verte.
Smoke test initial (import src.server) echouait : server.py leve ValueError au sans CALDAV_DATA_PATH. Remplace par python -m compileall -q src/ (valide la syntaxe sans executer le module). CI: verte.
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.
Aligne le pipeline CI/CD de mcp-ics sur le pattern web/mydl.
Nouvelle architecture
pr.yamldocker runmain.yaml#minor/#majordans le message de merge pour bump)tag.yaml:vX.Y.Zet:vX.Y.Z-latest— seule source de push Dockercron.yaml:vX.Y.Z-latest(patchs de sécurité)_ci-common.yamlChangements clés vs avant
:latestà chaque merge : Docker n'est poussé qu'au push de tag, après tests verts.jcabillot/mcp-ics:vX.Y.Z(stables, immuables) +:vX.Y.Z-latest(rebuild nightly).release.yamlutilisaitGITHUB_TOKENpour le tag : tag créé mais ne déclenchait jamais de workflow downstream. Remplacé par le PATSA_TOKEN_ACTION_PUSH_TAGS(déjà au niveau org perso, utilisé par mydl).docker-build.yaml(absorbé),release.yaml(absorbé dans main.yaml),test.yaml(absorbé dans _ci-common + pr).python -c "import src.server"dans le conteneur (pas de tests/test.sh ici).Smoke test initial (import src.server) echouait : server.py leve ValueError au sans CALDAV_DATA_PATH. Remplace par python -m compileall -q src/ (valide la syntaxe sans executer le module). CI: verte.