From 73d2168b87dddc9cf0fa6a165c8c3b2cba953f87 Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Mon, 17 Aug 2026 21:32:56 +0200 Subject: [PATCH 1/2] main: ci: better filter Signed-off-by: GnomeZworc --- .forgejo/workflows/release-pipeline.yml | 41 ++++++++++++------------- .forgejo/workflows/release.yml | 22 +++++++++++-- 2 files changed, 40 insertions(+), 23 deletions(-) diff --git a/.forgejo/workflows/release-pipeline.yml b/.forgejo/workflows/release-pipeline.yml index aad37ff..53e2ad3 100644 --- a/.forgejo/workflows/release-pipeline.yml +++ b/.forgejo/workflows/release-pipeline.yml @@ -1,16 +1,9 @@ name: Release Pipeline -# Un seul pipeline pour les préversions et les releases finales : les cinq jobs -# (cible, build, assets, manifeste, publication) sont identiques dans les deux -# cas, seul le drapeau `prerelease` change. Le dupliquer dans un second fichier -# recopierait tout pour une ligne de différence. -# -# Le filtre `[0-9]*` couvre les deux formes de tag (0.1.0, 0.1.0rc016) tout en -# ignorant les tags de travail qui ne commencent pas par un chiffre. on: push: tags: - - '[0-9]*' + - '[0-9]*.[0-9]*.[0-9]*' jobs: set-release-target: @@ -22,22 +15,28 @@ jobs: - name: Déterminer la release cible id: setvar run: | - if [[ "${GITHUB_REF}" == refs/tags/* ]]; then - TAG="${GITHUB_REF#refs/tags/}" - echo "release_cible=$TAG" >> $GITHUB_OUTPUT - elif [[ "${GITHUB_REF}" == "refs/heads/main" ]]; then - echo "release_cible=latest" >> $GITHUB_OUTPUT + TAG="${GITHUB_REF#refs/tags/}" + + # Formes acceptées, et rien d'autre : + # X.Y.Z release finale → prerelease=false, notes obligatoires + # X.Y.ZrcNNN préversion → prerelease=true, notes optionnelles + # + # Le nombre de chiffres de rc est fixé à 3 (rc016, pas rc16) pour que + # le tri lexicographique des tags suive l'ordre chronologique. + if [[ "${TAG}" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]] + then + PRERELEASE=false + elif [[ "${TAG}" =~ ^[0-9]+\.[0-9]+\.[0-9]+rc[0-9]{3}$ ]] + then + PRERELEASE=true else - echo "release_cible=unknown" >> $GITHUB_OUTPUT + echo "tag hors convention : ${TAG}" >&2 + echo "formes acceptées : X.Y.Z (release) ou X.Y.ZrcNNN (préversion, rc sur 3 chiffres)" >&2 + exit 1 fi - # Un tag contenant « rc » est une préversion ; tout le reste est une - # release finale, qui exige des notes (cf. release.yml). - if [[ "${GITHUB_REF#refs/tags/}" == *rc* ]]; then - echo "prerelease=true" >> $GITHUB_OUTPUT - else - echo "prerelease=false" >> $GITHUB_OUTPUT - fi + echo "release_cible=${TAG}" >> $GITHUB_OUTPUT + echo "prerelease=${PRERELEASE}" >> $GITHUB_OUTPUT - name: Afficher la variable run: | diff --git a/.forgejo/workflows/release.yml b/.forgejo/workflows/release.yml index 8372c80..a6a10a5 100644 --- a/.forgejo/workflows/release.yml +++ b/.forgejo/workflows/release.yml @@ -30,10 +30,24 @@ jobs: - name: Préparer les notes de version run: | NOTES="release_notes/${TAG}.md" + # Titre par défaut : le tag seul. Un H1 en première ligne des notes le + # remplace par « — ». + RELEASE_NAME="${TAG}" + if [[ -f "${NOTES}" ]] then echo "notes trouvées : ${NOTES}" - cp "${NOTES}" body.md + FIRST_LINE=$(head -1 "${NOTES}") + if [[ "${FIRST_LINE}" =~ ^\#[[:space:]]+(.+)$ ]] + then + RELEASE_NAME="${TAG} — ${BASH_REMATCH[1]}" + # H1 retiré du corps : Forgejo affiche déjà le titre au-dessus, le + # garder l'afficherait deux fois. `/./,$!d` mange les lignes vides + # laissées en tête. + tail -n +2 "${NOTES}" | sed '/./,$!d' > body.md + else + cp "${NOTES}" body.md + fi elif [[ "${PRERELEASE}" == "true" ]] then echo "aucune note pour ${TAG}, texte générique (préversion)" @@ -43,16 +57,20 @@ jobs: echo "créer ${NOTES} avant de pousser le tag" >&2 exit 1 fi + + echo "RELEASE_NAME=${RELEASE_NAME}" >> "${GITHUB_ENV}" + echo "--- titre --- ${RELEASE_NAME}" echo "--- body ---"; cat body.md - name: Create release run: | jq -n \ --arg tag "${TAG}" \ + --arg name "${RELEASE_NAME}" \ --rawfile body body.md \ --argjson prerelease "${PRERELEASE}" \ '{ tag_name: $tag, - name: $tag, + name: $name, body: $body, draft: false, prerelease: $prerelease, From 64225fbea1f22fc953eb45e6e8d523d20cb0f5cf Mon Sep 17 00:00:00 2001 From: GnomeZworc Date: Mon, 17 Aug 2026 21:33:11 +0200 Subject: [PATCH 2/2] main: doc: add name Signed-off-by: GnomeZworc --- release_notes/0.1.0.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/release_notes/0.1.0.md b/release_notes/0.1.0.md index b31bde9..be3d69c 100644 --- a/release_notes/0.1.0.md +++ b/release_notes/0.1.0.md @@ -1,3 +1,5 @@ +# Varion + Première version stable de **syonad/two**, orchestrateur réseau et VM mono-nœud. ## Fonctionnalités