From cad6aebe114fafe207c07ab32dfe911d15eded29 Mon Sep 17 00:00:00 2001 From: Andrii Liekariev Date: Mon, 1 Jun 2026 22:22:20 +0300 Subject: [PATCH] Make release workflow re-runnable and clean up on failure MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Skip `gh release create` when the release already exists so re-running the publish job after a transient `qgis-plugin-ci` failure (e.g. OSGEO upload error) no longer aborts on "release already exists". Track whether this run created the release, and on failure delete it — but only if we created it this run — so a partial publish doesn't leave an empty release with no plugin zip attached. The tag is preserved so a re-run can proceed normally. --- .github/workflows/release.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index d7c7043..808cffd 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -32,14 +32,21 @@ jobs: with: {python-version: '3.12'} - run: pip install qgis-plugin-ci==2.10.0 - name: Create GitHub Release + id: create_release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | + if gh release view "${GITHUB_REF_NAME}" >/dev/null 2>&1; then + echo "Release ${GITHUB_REF_NAME} already exists, skipping creation." + echo "created=false" >> "${GITHUB_OUTPUT}" + exit 0 + fi if [[ "${GITHUB_REF_NAME}" == *-* ]]; then gh release create "${GITHUB_REF_NAME}" --title "${GITHUB_REF_NAME}" --generate-notes --prerelease else gh release create "${GITHUB_REF_NAME}" --title "${GITHUB_REF_NAME}" --generate-notes fi + echo "created=true" >> "${GITHUB_OUTPUT}" - name: Release env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} @@ -50,3 +57,8 @@ jobs: --github-token "${GITHUB_TOKEN}" \ --osgeo-username "${OSGEO_USERNAME}" \ --osgeo-password "${OSGEO_PASSWORD}" + - name: Delete orphan release on failure + if: failure() && steps.create_release.outputs.created == 'true' + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: gh release delete "${GITHUB_REF_NAME}" --yes