From 46ec796b797dea1f70e9dd85396939767d41ae8d Mon Sep 17 00:00:00 2001 From: Julian Lechner Date: Fri, 2 Oct 2026 14:43:39 +0200 Subject: [PATCH] ci: align Gitea release workflows --- .../{BuildDev.yml => CD Development.yml} | 69 +++++++++++++++++-- .../{BuildLatest.yml => CD Production.yml} | 4 +- 2 files changed, 67 insertions(+), 6 deletions(-) rename .gitea/workflows/{BuildDev.yml => CD Development.yml} (52%) rename .gitea/workflows/{BuildLatest.yml => CD Production.yml} (96%) diff --git a/.gitea/workflows/BuildDev.yml b/.gitea/workflows/CD Development.yml similarity index 52% rename from .gitea/workflows/BuildDev.yml rename to .gitea/workflows/CD Development.yml index c22d3b9..62b13eb 100644 --- a/.gitea/workflows/BuildDev.yml +++ b/.gitea/workflows/CD Development.yml @@ -26,7 +26,7 @@ jobs: id: changes env: GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} - API_URL: ${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/actions/workflows/BuildDev.yml/runs + API_URL: ${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/actions/workflows/CD%20Development.yml/runs run: | runs="$(curl --fail-with-body --silent --show-error \ --header "Authorization: token ${GITEA_TOKEN}" \ @@ -52,6 +52,7 @@ jobs: runs-on: ubuntu-latest permissions: code: read + releases: write steps: - name: Checkout repository @@ -69,7 +70,7 @@ jobs: id: version run: | version=$(node -p 'require("./package.json").version') - docker_tag=$version + docker_tag=${version//+/-} revision=${GITEA_RUN_ATTEMPT} echo "value=$version" >> "$GITHUB_OUTPUT" echo "docker_tag=$docker_tag" >> "$GITHUB_OUTPUT" @@ -85,7 +86,7 @@ jobs: username: ${{ secrets.DOCKER_REGISTRY_USERNAME }} password: ${{ secrets.DOCKER_REGISTRY_PASSWORD }} - - name: Build and push dev image + - name: Build and push development image uses: docker/build-push-action@v6 with: context: . @@ -95,4 +96,64 @@ jobs: APP_VERSION=${{ steps.version.outputs.value }} VCS_REF=${{ steps.version.outputs.revision }} tags: | - ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:dev + ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:development + + - name: Create Gitea pre-release + env: + GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }} + RELEASE_TAG: v${{ steps.version.outputs.docker_tag }} + run: | + api_url="${{ gitea.server_url }}/api/v1/repos/${{ gitea.repository }}/releases" + 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 .prerelease == true and .tag_name != $tag)][0].tag_name // empty')" + + if [ -n "$previous_tag" ]; then + 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' "${GITEA_SHA}")" + full_changelog="" + fi + + if [ -z "$commit_messages" ]; then + commit_messages='- No commits since the previous pre-release' + fi + + { + echo '## Changes' + echo + printf '%s\n' "$commit_messages" + echo + if [ -n "$full_changelog" ]; then + echo "**Full Changelog**: ${full_changelog}" + fi + } > 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, prerelease: true}' \ + > 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 + 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" diff --git a/.gitea/workflows/BuildLatest.yml b/.gitea/workflows/CD Production.yml similarity index 96% rename from .gitea/workflows/BuildLatest.yml rename to .gitea/workflows/CD Production.yml index 6590c41..c8fad62 100644 --- a/.gitea/workflows/BuildLatest.yml +++ b/.gitea/workflows/CD Production.yml @@ -72,7 +72,7 @@ jobs: "${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')" + '[.[] | select(.draft == false and .prerelease == false and .tag_name != $tag)][0].tag_name // empty')" if [ -n "$previous_tag" ]; then commit_messages="$(git log --reverse --format='- %s' "${previous_tag}..${GITEA_SHA}")" @@ -100,7 +100,7 @@ jobs: --arg tag "$RELEASE_TAG" \ --arg target "$GITEA_SHA" \ --rawfile body release-notes.md \ - '{tag_name: $tag, target_commitish: $target, name: $tag, body: $body}' \ + '{tag_name: $tag, target_commitish: $target, name: $tag, body: $body, prerelease: false}' \ > release.json release_id="$(printf '%s' "$releases" | jq -r \