ci: align pipeline on web/mydl pattern (real docker tags) #27

Merged
jcabillot merged 2 commits from ci/align-mydl into main 2026-10-08 16:54:05 -04:00
Owner

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).
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).
opencodecabilloteu added 1 commit 2026-10-08 16:30:10 -04:00
ci: align pipeline on web/mydl pattern
CI Shared Jobs / hadolint (pull_request) Successful in 3m43s
CI Shared Jobs / build-test (pull_request) Failing after 4m10s
PR Checks / ci (pull_request) Failing after 4m20s
b71e470511
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
opencodecabilloteu added 1 commit 2026-10-08 16:40:36 -04:00
ci: smoke test = compileall (server.py raises on import without CALDAV_DATA_PATH)
CI Shared Jobs / hadolint (pull_request) Successful in 41s
CI Shared Jobs / build-test (pull_request) Successful in 3m38s
PR Checks / ci (pull_request) Successful in 4m40s
155178c665
Author
Owner

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.
jcabillot merged commit 70d7306129 into main 2026-10-08 16:54:05 -04:00
jcabillot deleted branch ci/align-mydl 2026-10-08 16:54:08 -04:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: perso/mcp-ics#27