From afc445aa19a21bf881a4d04830abcb70d2ca55b9 Mon Sep 17 00:00:00 2001 From: Julian Lechner Date: Wed, 22 Jul 2026 22:40:59 +0200 Subject: [PATCH] ci(gitea): migrate release workflow --- {.github => .gitea}/workflows/BuildLatest.yml | 49 ++++++++++++++----- 1 file changed, 38 insertions(+), 11 deletions(-) rename {.github => .gitea}/workflows/BuildLatest.yml (56%) diff --git a/.github/workflows/BuildLatest.yml b/.gitea/workflows/BuildLatest.yml similarity index 56% rename from .github/workflows/BuildLatest.yml rename to .gitea/workflows/BuildLatest.yml index 96af3cf..7d205a4 100644 --- a/.github/workflows/BuildLatest.yml +++ b/.gitea/workflows/BuildLatest.yml @@ -11,7 +11,8 @@ jobs: docker: runs-on: ubuntu-latest permissions: - contents: write + code: read + releases: write steps: - name: Checkout repository @@ -32,7 +33,7 @@ jobs: run: | version=$(node -p 'require("./package.json").version') docker_tag=${version//+/-} - revision=${GITHUB_RUN_ATTEMPT} + revision=${GITEA_RUN_ATTEMPT} echo "value=$version" >> "$GITHUB_OUTPUT" echo "docker_tag=$docker_tag" >> "$GITHUB_OUTPUT" echo "revision=$revision" >> "$GITHUB_OUTPUT" @@ -59,18 +60,25 @@ jobs: tags: | ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest - - name: Create GitHub release + - name: Create Gitea release env: - GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} RELEASE_TAG: v${{ steps.version.outputs.docker_tag }} run: | - previous_tag="$(gh api repos/${{ github.repository }}/releases --paginate --jq '.[] | select(.draft == false) | .tag_name' | grep -Fxv "$RELEASE_TAG" | head -n 1 || true)" + api_url="${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases" + # ponytail: 50 recent releases cover normal reruns; paginate if old releases are rebuilt. + releases="$(curl --fail-with-body --silent --show-error \ + --header "Authorization: token ${GITEA_TOKEN}" \ + "${api_url}?limit=50")" + previous_tag="$(printf '%s' "$releases" | jq -r \ + --arg tag "$RELEASE_TAG" \ + '[.[] | select(.draft == false and .tag_name != $tag)][0].tag_name // empty')" if [ -n "$previous_tag" ]; then - commit_messages="$(git log --reverse --format='- %s' "${previous_tag}..${GITHUB_SHA}")" - full_changelog="https://github.com/${{ github.repository }}/compare/${previous_tag}...${RELEASE_TAG}" + commit_messages="$(git log --reverse --format='- %s' "${previous_tag}..${GITEA_SHA}")" + full_changelog="${{ gitea.server_url }}/${{ gitea.repository }}/compare/${previous_tag}...${RELEASE_TAG}" else - commit_messages="$(git log --reverse --format='- %s' "${GITHUB_SHA}")" + commit_messages="$(git log --reverse --format='- %s' "${GITEA_SHA}")" full_changelog="" fi @@ -88,8 +96,27 @@ jobs: fi } > release-notes.md - if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then - gh release edit "$RELEASE_TAG" --title "$RELEASE_TAG" --notes-file release-notes.md + jq --null-input \ + --arg tag "$RELEASE_TAG" \ + --arg target "$GITEA_SHA" \ + --rawfile body release-notes.md \ + '{tag_name: $tag, target_commitish: $target, name: $tag, body: $body}' \ + > release.json + + release_id="$(printf '%s' "$releases" | jq -r \ + --arg tag "$RELEASE_TAG" \ + '.[] | select(.tag_name == $tag) | .id')" + if [ -n "$release_id" ]; then + method=PATCH + release_url="${api_url}/${release_id}" else - gh release create "$RELEASE_TAG" --target "${GITHUB_SHA}" --title "$RELEASE_TAG" --notes-file release-notes.md + method=POST + release_url="$api_url" fi + + curl --fail-with-body --silent --show-error \ + --request "$method" \ + --header "Authorization: token ${GITEA_TOKEN}" \ + --header 'Content-Type: application/json' \ + --data-binary @release.json \ + "$release_url"