From 46069727ad53c60c34b43ddd6862e53f2b80525d Mon Sep 17 00:00:00 2001 From: Nicolas Date: Tue, 8 Sep 2026 22:40:56 +0200 Subject: [PATCH] =?UTF-8?q?chore(release):=20pr=C3=A9pare=20la=20v0.2.2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - `apps/web/package.json` 0.2.1 → 0.2.2 (alimente `__APP_VERSION__` : pied de sidebar + comparaison de `useAppUpdateCheck`), même convention que le commit `chore(web): version 0.2.1`. - `release.yml` : la step « Crée la Release Forgejo » devient idempotente — si le tag est déjà connu de Forgejo (tag poussé à la main, ou ré-exécution du job), l'API répond 409 ; on récupère alors la release existante au lieu de faire échouer le job. C'est ce 409 qui avait fait tomber le run du tag v0.2.2 poussé en avance. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/release.yml | 28 ++++++++++++++++++++++------ apps/web/package.json | 2 +- 2 files changed, 23 insertions(+), 7 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe3537a..b87ac85 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -151,23 +151,39 @@ jobs: # propre à GitHub, pas répliquée par l'API Forgejo) — le corps de la # release reste minimal, cohérent avec l'absence d'outillage de # changelog ailleurs dans le repo. - - name: Crée la Release Forgejo + - name: Crée (ou récupère) la Release Forgejo id: create-release env: FORGEJO_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases" body="$(printf '{"tag_name":"%s","name":"%s","draft":false,"prerelease":false}' "$GITHUB_REF_NAME" "$GITHUB_REF_NAME")" - resp="$(curl -fsS -X POST "$api" \ + + # POST pour créer la release, code HTTP capturé à part. Si le tag est + # déjà connu de Forgejo (tag poussé à la main avant ce workflow, ou + # ré-exécution du job), l'API répond 409 : on réutilise alors la + # release existante au lieu d'échouer — idempotence, cf. l'incident + # du tag v0.2.2 poussé en avance qui a fait tomber ce job sur un 409. + code="$(curl -sS -o /tmp/release.json -w '%{http_code}' -X POST "$api" \ -H "Authorization: token $FORGEJO_TOKEN" \ -H "Content-Type: application/json" \ -d "$body")" - id="$(echo "$resp" | grep -o '"id":[0-9]*' | head -1 | cut -d: -f2)" - if [ -z "$id" ]; then - echo "Réponse inattendue de l'API Release, pas d'id trouvé : $resp" >&2 + + if [ "$code" = "409" ]; then + echo "Release $GITHUB_REF_NAME déjà existante (HTTP 409) — récupération de son id." + curl -fsS "$api/tags/$GITHUB_REF_NAME" \ + -H "Authorization: token $FORGEJO_TOKEN" -o /tmp/release.json + elif [ "$code" -lt 200 ] || [ "$code" -ge 300 ]; then + echo "Échec de création de la Release (HTTP $code) : $(cat /tmp/release.json)" >&2 exit 1 fi - echo "Release $GITHUB_REF_NAME créée (id=$id)" + + id="$(grep -o '"id":[0-9]*' /tmp/release.json | head -1 | cut -d: -f2)" + if [ -z "$id" ]; then + echo "Pas d'id de release trouvé : $(cat /tmp/release.json)" >&2 + exit 1 + fi + echo "Release $GITHUB_REF_NAME prête (id=$id)" echo "release-id=$id" >> "$GITHUB_OUTPUT" - name: Attache l'APK à la Release diff --git a/apps/web/package.json b/apps/web/package.json index 908ea72..814beeb 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "0.2.1", + "version": "0.2.2", "private": true, "type": "module", "scripts": {