diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 25ce5e7..0a9e145 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -130,13 +130,46 @@ jobs: with: name: batchcooking.apk - - uses: https://github.com/softprops/action-gh-release@v2 - with: - # Auto-généré depuis les PR mergées depuis le tag précédent — pas - # d'outillage de changelog à maintenir, cohérent avec l'absence - # d'outillage de versioning ailleurs dans le repo pour l'instant. - generate_release_notes: true - files: batchcooking.apk + # softprops/action-gh-release (l'action GitHub habituelle pour ça) + # échoue systématiquement contre ce Forgejo : sa requête de création + # de release répond 405 (vérifié en conditions réelles, tag v0.2.0 — + # pas un souci de ref bare comme les autres actions de ce fichier, + # une vraie incompatibilité d'API entre les deux plateformes qui n'a + # pas de contournement connu côté configuration de l'action). Appelle + # directement l'API native de Forgejo plutôt qu'une action tierce + # dont la compatibilité GitHub-Forgejo n'est pas garantie. + # + # Pas d'équivalent à `generate_release_notes` ici (fonctionnalité + # 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 + 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" \ + -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 + exit 1 + fi + echo "Release $GITHUB_REF_NAME créée (id=$id)" + echo "release-id=$id" >> "$GITHUB_OUTPUT" + + - name: Attache l'APK à la Release + env: + FORGEJO_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + api="$GITHUB_API_URL/repos/$GITHUB_REPOSITORY/releases/${{ steps.create-release.outputs.release-id }}/assets" + curl -fsS -X POST "$api?name=batchcooking.apk" \ + -H "Authorization: token $FORGEJO_TOKEN" \ + -F "attachment=@batchcooking.apk" notify-portainer: runs-on: ubuntu-latest