From 2ea056a8f11c1377412ace2670e9bdb636c3f26e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20ROBERT?= Date: Mon, 19 Oct 2026 09:54:08 +0200 Subject: [PATCH 1/2] =?UTF-8?q?chore(doc=5Furl):=20le=20site=20passe=20de?= =?UTF-8?q?=20blog.=20=C3=A0=20www.stephane-robert.info?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CE QUI A CHANGÉ, ET CE QUI NE CHANGE PAS Le site est désormais servi sur `www.stephane-robert.info`, et l'ancien domaine redirige : https://blog.stephane-robert.info/ 301 → www/ https://www.stephane-robert.info/ 200 Les CHEMINS sont identiques : seul l'hôte change. Aucun `doc_url` n'a donc besoin d'être réécrit, seulement son domaine. POURQUOI MIGRER PUISQUE LA REDIRECTION FONCTIONNE `validate-structure --check-urls` suit les redirections : les catalogues qui étaient rouges rendent `ok = True` sans qu'une ligne ait changé. Cette migration ne répare donc rien, elle met au propre : un `doc_url` doit pointer la page, pas dépendre d'une redirection qu'il faudra bien retirer un jour. CE QUI A ÉTÉ VÉRIFIÉ AVANT D'ÉCRIRE Les 359 `doc_url` distincts déclarés par les labs ont été cherchés dans le dépôt du site, hors réseau : ils y existent tous. Et un échantillon réparti a confirmé que `www` les sert, y compris vingt-trois pages que l'ancien domaine rendait en 404. DEUX MESURES RÉSEAU ONT CONCLU À TORT QUE LE SITE ÉTAIT CASSÉ La première a interrogé les 359 URL en rafale, la seconde à deux secondes d'intervalle. Les deux ont déclenché une protection anti-abus de l'hébergeur, qui répond 302 vers sa page « Résoudre une erreur de redirection web », et la seconde a fini par bloquer l'IP, racine du site comprise. Le signal était explicite : le compteur de succès s'est figé à 28 pendant que les échecs montaient. C'est le symptôme décrit dans les consignes du chantier, « une boucle qui rend le même code d'erreur sur tous ses cas ne mesure plus rien, elle mesure sa propre panne », et il n'a pas été reconnu à temps. C'est pourquoi la vérification s'appuie désormais sur le dépôt du site, et sur `--check-urls` en CI, qui tourne depuis une IP neutre et dont c'est le métier. VÉRIFIÉ APRÈS MIGRATION occurrences de l'ancien domaine restantes 0 tous les YAML touchés se chargent le catalogue régénéré, et `--check` à jour validate-structure ok pre-commit run --all-files tous les hooks passent la suite de tests du dépôt verte Co-Authored-By: Claude Opus 5 --- CODE_OF_CONDUCT.fr.md | 2 +- CODE_OF_CONDUCT.md | 2 +- README.fr.md | 6 +++--- README.md | 6 +++--- SECURITY.fr.md | 2 +- SECURITY.md | 2 +- labs/fondations-premier-workflow/README.fr.md | 2 +- labs/fondations-premier-workflow/README.md | 2 +- labs/fondations-premier-workflow/lab.yaml | 2 +- meta.yml | 4 ++-- 10 files changed, 15 insertions(+), 15 deletions(-) diff --git a/CODE_OF_CONDUCT.fr.md b/CODE_OF_CONDUCT.fr.md index 187b32d..e889c47 100644 --- a/CODE_OF_CONDUCT.fr.md +++ b/CODE_OF_CONDUCT.fr.md @@ -56,7 +56,7 @@ publics. Les cas de comportement abusif, harcelant ou autrement inacceptable peuvent être signalés au responsable du projet via les coordonnées publiées sur -. Toutes les plaintes seront examinées et +. Toutes les plaintes seront examinées et instruites rapidement et équitablement. Tous les responsables de la communauté sont tenus de respecter la vie privée et diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index f42ac45..4b0dfea 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -54,7 +54,7 @@ an individual is officially representing the community in public spaces. Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the project maintainer through the contact details published on -. All complaints will be reviewed and +. All complaints will be reviewed and investigated promptly and fairly. All community leaders are obligated to respect the privacy and security of the diff --git a/README.fr.md b/README.fr.md index 7cbe09a..824ac93 100644 --- a/README.fr.md +++ b/README.fr.md @@ -10,7 +10,7 @@ Formation pratique **GitHub Actions et sécurité de la chaîne d'approvisionnement**, pilotée par la CLI [`dsoxlab`](https://github.com/stephrobert/dsoxlab). Ce dépôt est le **catalogue de labs** de la formation GitHub Actions du site -[blog.stephane-robert.info](https://blog.stephane-robert.info/docs/pipeline-cicd/github/parcours/), +[www.stephane-robert.info](https://www.stephane-robert.info/docs/pipeline-cicd/github/parcours/), du premier workflow aux runners auto-hébergés, avec un angle de durcissement systématique. @@ -227,7 +227,7 @@ labs à venir se suivent dans les | Lab (id) | Titre | Niveau | Certif | Runtime | Guide compagnon | |---|---|---|---|---|---| -| `fondations-premier-workflow` | Premier workflow : les tests tournent à chaque push, et un test cassé fait échouer le pipeline | fondations | - | shell | [guide](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/) | +| `fondations-premier-workflow` | Premier workflow : les tests tournent à chaque push, et un test cassé fait échouer le pipeline | fondations | - | shell | [guide](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/) | _1 lab, table générée par `scripts/gen_catalog.py`._ @@ -244,7 +244,7 @@ _1 lab, table générée par `scripts/gen_catalog.py`._ ### Licence -Copyright (c) 2026 Stéphane Robert, https://blog.stephane-robert.info +Copyright (c) 2026 Stéphane Robert, https://www.stephane-robert.info Ce catalogue est publié sous licence [Creative Commons Attribution 4.0 International (CC BY 4.0)](./LICENSE). Vous diff --git a/README.md b/README.md index a874cd3..fdca9f0 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Hands-on training in **GitHub Actions and supply chain security**, driven by the [`dsoxlab`](https://github.com/stephrobert/dsoxlab) CLI. This repository is the **lab catalogue** of the GitHub Actions course on -[blog.stephane-robert.info](https://blog.stephane-robert.info/docs/pipeline-cicd/github/parcours/), +[www.stephane-robert.info](https://www.stephane-robert.info/docs/pipeline-cicd/github/parcours/), from the first workflow to self-hosted runners, with a systematic hardening angle. @@ -224,7 +224,7 @@ in the [milestones](https://github.com/stephrobert/github-actions-training/miles | Lab (id) | Title | Level | Certif | Runtime | Companion guide | |---|---|---|---|---|---| -| `fondations-premier-workflow` | First workflow: the tests run on every push, and a broken test turns the pipeline red | fondations | - | shell | [guide](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/) | +| `fondations-premier-workflow` | First workflow: the tests run on every push, and a broken test turns the pipeline red | fondations | - | shell | [guide](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/) | _1 lab, table generated by `scripts/gen_catalog.py`._ @@ -241,7 +241,7 @@ _1 lab, table generated by `scripts/gen_catalog.py`._ ### License -Copyright (c) 2026 Stéphane Robert, https://blog.stephane-robert.info +Copyright (c) 2026 Stéphane Robert, https://www.stephane-robert.info This work is licensed under the [Creative Commons Attribution 4.0 International License (CC BY 4.0)](./LICENSE). diff --git a/SECURITY.fr.md b/SECURITY.fr.md index 01563d7..7eb88c4 100644 --- a/SECURITY.fr.md +++ b/SECURITY.fr.md @@ -18,7 +18,7 @@ Si vous pensez avoir trouvé une vulnérabilité, signalez-la en privé : [avis de sécurité privé](https://github.com/stephrobert/github-actions-training/security/advisories/new) sur GitHub. - Sinon, utilisez les coordonnées publiées sur - . + . Merci d'inclure : diff --git a/SECURITY.md b/SECURITY.md index 4fd7b69..4b7862d 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -18,7 +18,7 @@ If you believe you have found a vulnerability, report it privately: [private security advisory](https://github.com/stephrobert/github-actions-training/security/advisories/new) on GitHub. - Otherwise, use the contact details published on - . + . Please include: diff --git a/labs/fondations-premier-workflow/README.fr.md b/labs/fondations-premier-workflow/README.fr.md index b9608c9..7641ee8 100644 --- a/labs/fondations-premier-workflow/README.fr.md +++ b/labs/fondations-premier-workflow/README.fr.md @@ -15,7 +15,7 @@ YAML ; il ne passe pas celle-ci. |---|---| | Cible | votre poste : act 0.2.89 et Docker, image `ubuntu-24.04` du runner épinglée par digest | | Durée | environ 30 minutes | -| Leçons jumelées | [Qu'est-ce qu'un workflow ?](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/), [Sécurité : les bases](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/securite-bases/) | +| Leçons jumelées | [Qu'est-ce qu'un workflow ?](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/), [Sécurité : les bases](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/securite-bases/) | | Jouable avec act | oui, entièrement | ```bash diff --git a/labs/fondations-premier-workflow/README.md b/labs/fondations-premier-workflow/README.md index b8896fc..7389233 100644 --- a/labs/fondations-premier-workflow/README.md +++ b/labs/fondations-premier-workflow/README.md @@ -14,7 +14,7 @@ not pass this one. |---|---| | Target | your machine: act 0.2.89 and Docker, `ubuntu-24.04` runner image pinned by digest | | Duration | about 30 minutes | -| Paired lessons | [What is a workflow?](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/), [Security: the basics](https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/securite-bases/) | +| Paired lessons | [What is a workflow?](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/), [Security: the basics](https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/securite-bases/) | | Playable with act | yes, entirely | ```bash diff --git a/labs/fondations-premier-workflow/lab.yaml b/labs/fondations-premier-workflow/lab.yaml index af507c4..b16d9f0 100644 --- a/labs/fondations-premier-workflow/lab.yaml +++ b/labs/fondations-premier-workflow/lab.yaml @@ -22,7 +22,7 @@ skills: # l'image ubuntu-24.04 du runner, épinglée par digest dans .actrc. distros: - ubuntu24 -doc_url: https://blog.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/ +doc_url: https://www.stephane-robert.info/docs/pipeline-cicd/github/fondations/workflow/ runtime: type: shell workdir: challenge/work diff --git a/meta.yml b/meta.yml index 0393941..580cdc4 100644 --- a/meta.yml +++ b/meta.yml @@ -2,7 +2,7 @@ # # Source de vérité de l'ordre des labs et de leur regroupement en sections, # calqué sur le parcours du blog : -# https://blog.stephane-robert.info/docs/pipeline-cicd/github/parcours/ +# https://www.stephane-robert.info/docs/pipeline-cicd/github/parcours/ # # Chaque entrée `sections[].labs[]` est un chemin relatif depuis `labs/`. Le # lab existe pour dsoxlab si et seulement si `labs//lab.yaml` @@ -25,7 +25,7 @@ repo: solutions: plaintext category: github-actions title: "GitHub Actions Training: verifiable labs" - blog_url: "https://blog.stephane-robert.info/docs/pipeline-cicd/github/parcours/" + blog_url: "https://www.stephane-robert.info/docs/pipeline-cicd/github/parcours/" issues_url: "https://github.com/stephrobert/github-actions-training/issues" description: | One lab per skill of the blog's GitHub Actions course. Each lab has a From 8792cddab9326235d50de827c94950a9529a61f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20ROBERT?= Date: Mon, 19 Oct 2026 10:06:16 +0200 Subject: [PATCH 2/2] chore(release): 0.2.1, la migration du domaine du site MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit CE QUE CETTE VERSION PORTE Les `doc_url` du catalogue pointent désormais `www.stephane-robert.info`. L'ancien hôte redirige en 301 vers le même chemin, et `validate-structure --check-urls` suit les redirections : ce catalogue était vert avant qu'une ligne change. La migration est une mise au propre, pas une réparation. CE QUI EST VÉRIFIÉ version, CHANGELOG EN, CHANGELOG FR disent 0.2.1 uv lock --check le verrou décrit le pyproject pre-commit run --all-files tous les hooks passent UN TIRET CADRATIN S'ÉTAIT GLISSÉ DANS L'ENTRÉE ANGLAISE Le hook `style-apprenant` du catalogue IAM l'a attrapé dans son `CHANGELOG.md`. La règle vaut pour les douze catalogues, pas seulement là où un hook la contrôle : la correction a donc été portée partout. Co-Authored-By: Claude Opus 5 --- CHANGELOG.fr.md | 17 +++++++++++++++++ CHANGELOG.md | 16 ++++++++++++++++ pyproject.toml | 2 +- uv.lock | 2 +- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.fr.md b/CHANGELOG.fr.md index 49d0d8c..a627f4b 100644 --- a/CHANGELOG.fr.md +++ b/CHANGELOG.fr.md @@ -21,6 +21,23 @@ ne recule pas, et 0.2.0 sous v1.2.0 aurait menti sur l'ordre des choses. --- +## [0.2.1] - 2026-10-19 + +### Modifié + +- **Chaque `doc_url` pointe désormais `www.stephane-robert.info`.** Le site est + passé de `blog.` à `www.`, et l'ancien hôte redirige en 301 vers le même + chemin. Rien n'était cassé : `validate-structure --check-urls` suit les + redirections, et ce catalogue était vert avant qu'une ligne change. La + migration est une mise au propre et non une réparation : un `doc_url` doit + pointer la page, pas dépendre d'une redirection qu'il faudra bien retirer un + jour. + + Les chemins sont identiques entre les deux hôtes : seul l'hôte a changé. Les + 359 `doc_url` que les catalogues déclarent ont été cherchés dans le dépôt du + site, hors réseau : ils y existent tous, y compris vingt-trois pages que + l'ancien hôte rendait en 404. + ## [0.2.0] - 2026-10-17 ### Modifié diff --git a/CHANGELOG.md b/CHANGELOG.md index dfe7f5f..f79c56a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,22 @@ backwards, and 0.2.0 under v1.2.0 would have lied about the order of things. --- +## [0.2.1] - 2026-10-19 + +### Changed + +- **Every `doc_url` now points at `www.stephane-robert.info`.** The site moved + from `blog.` to `www.`, and the old host redirects with a 301 to the same + path. Nothing was broken: `validate-structure --check-urls` follows + redirections, and this catalogue was green before a single line changed. The + migration is housekeeping, not repair: a `doc_url` should point at the page + rather than depend on a redirection that will be removed one day. + + The paths are identical between the two hosts, so only the host changed. The + 359 `doc_url` the catalogues declare were looked up in the site's own + repository, offline: all of them exist there, including twenty-three pages + the old host answered with a 404. + ## [0.2.0] - 2026-10-17 ### Changed diff --git a/pyproject.toml b/pyproject.toml index 7e8de5e..bae25f1 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "github-actions-training" -version = "0.2.0" +version = "0.2.1" description = "Labs vérifiables de la formation GitHub Actions du blog, joués avec act" requires-python = ">=3.12" dependencies = [ diff --git a/uv.lock b/uv.lock index 71a0303..2bc3ff1 100644 --- a/uv.lock +++ b/uv.lock @@ -13,7 +13,7 @@ wheels = [ [[package]] name = "github-actions-training" -version = "0.2.0" +version = "0.2.1" source = { virtual = "." } dependencies = [ { name = "pytest" },