From 874354f23564f278bdefe0aaa58bcd7d6e3126ce Mon Sep 17 00:00:00 2001 From: pyr0ball Date: Sun, 5 Apr 2026 20:38:02 -0700 Subject: [PATCH] fix: continue-on-error for mirror steps; guard duplicate Forgejo release creation --- .forgejo/workflows/mirror.yml | 2 ++ .forgejo/workflows/release-pypi.yml | 25 ++++++++++++++++++------- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/.forgejo/workflows/mirror.yml b/.forgejo/workflows/mirror.yml index f05925c..2fdf6f0 100644 --- a/.forgejo/workflows/mirror.yml +++ b/.forgejo/workflows/mirror.yml @@ -15,6 +15,7 @@ jobs: fetch-depth: 0 - name: Mirror to GitHub + continue-on-error: true env: GITHUB_MIRROR_TOKEN: ${{ secrets.GITHUB_MIRROR_TOKEN }} run: | @@ -22,6 +23,7 @@ jobs: git push github --mirror - name: Mirror to Codeberg + continue-on-error: true env: CODEBERG_MIRROR_TOKEN: ${{ secrets.CODEBERG_MIRROR_TOKEN }} run: | diff --git a/.forgejo/workflows/release-pypi.yml b/.forgejo/workflows/release-pypi.yml index c347160..d14e5bb 100644 --- a/.forgejo/workflows/release-pypi.yml +++ b/.forgejo/workflows/release-pypi.yml @@ -32,10 +32,21 @@ jobs: FORGEJO_TOKEN: ${{ secrets.FORGEJO_RELEASE_TOKEN }} run: | TAG="${GITHUB_REF_NAME}" - jq -n --arg tag "${TAG}" \ - '{"tag_name":$tag,"name":$tag,"draft":false,"prerelease":false}' \ - | curl -sf -X POST \ - -H "Authorization: token ${FORGEJO_TOKEN}" \ - -H "Content-Type: application/json" \ - "https://git.opensourcesolarpunk.com/api/v1/repos/Circuit-Forge/circuitforge-core/releases" \ - -d @- + # Check if release already exists for this tag + EXISTING=$(curl -sf \ + -H "Authorization: token ${FORGEJO_TOKEN}" \ + "https://git.opensourcesolarpunk.com/api/v1/repos/Circuit-Forge/circuitforge-core/releases/tags/${TAG}" \ + 2>/dev/null | jq -r '.id // empty') + + if [ -z "${EXISTING}" ]; then + jq -n --arg tag "${TAG}" \ + '{"tag_name":$tag,"name":$tag,"draft":false,"prerelease":false}' \ + | curl -sf -X POST \ + -H "Authorization: token ${FORGEJO_TOKEN}" \ + -H "Content-Type: application/json" \ + "https://git.opensourcesolarpunk.com/api/v1/repos/Circuit-Forge/circuitforge-core/releases" \ + -d @- + echo "Release created for ${TAG}" + else + echo "Release for ${TAG} already exists (id=${EXISTING}), skipping." + fi