ci(gitea): migrate release workflow

This commit is contained in:
2026-07-22 22:43:01 +02:00
parent 4a23b46e54
commit 60a607a39b
2 changed files with 23 additions and 12 deletions
@@ -9,6 +9,7 @@ permissions:
env: env:
VERSION_MAJOR: '1' VERSION_MAJOR: '1'
VERSION_MINOR: '1' VERSION_MINOR: '1'
VERSION_PATCH: ${{ gitea.run_number }}
jobs: jobs:
build: build:
@@ -39,7 +40,7 @@ jobs:
id: release_version id: release_version
run: | run: |
package_version="$(node -p "require('./package.json').version")" package_version="$(node -p "require('./package.json').version")"
echo "tag=${package_version}" >> "$GITHUB_OUTPUT" echo "tag=${package_version}" >> "$GITEA_OUTPUT"
- name: Run Build - name: Run Build
run: npm run build run: npm run build
@@ -49,24 +50,29 @@ jobs:
env: env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
- name: Create GitHub release - name: Create Gitea release
env: env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITEA_TOKEN: ${{ secrets.GITEA_TOKEN }}
GITEA_API_URL: ${{ gitea.api_url }}
GITEA_REPOSITORY: ${{ gitea.repository }}
GITEA_SERVER_URL: ${{ gitea.server_url }}
GITEA_SHA: ${{ gitea.sha }}
RELEASE_TAG: v${{ steps.release_version.outputs.tag }} RELEASE_TAG: v${{ steps.release_version.outputs.tag }}
run: | run: |
git fetch --force --tags git fetch --force --tags
previous_tag="$(gh api repos/${{ github.repository }}/releases --paginate --jq '.[] | select(.draft == false) | .tag_name' | grep -Fxv "$RELEASE_TAG" | head -n 1 || true)" releases_url="${GITEA_API_URL}/repos/${GITEA_REPOSITORY}/releases"
previous_tag="$(curl --fail --silent --show-error --header "Authorization: token ${GITEA_TOKEN}" "${releases_url}?limit=50" | jq -r --arg tag "$RELEASE_TAG" '[.[] | select(.draft == false and .tag_name != $tag)][0].tag_name // empty')"
if [ -n "$previous_tag" ]; then if [ -n "$previous_tag" ]; then
if git rev-parse --verify --quiet "${previous_tag}^{commit}" >/dev/null; then if git rev-parse --verify --quiet "${previous_tag}^{commit}" >/dev/null; then
commit_messages="$(git log --reverse --format='- %s' "${previous_tag}..${GITHUB_SHA}")" commit_messages="$(git log --reverse --format='- %s' "${previous_tag}..${GITEA_SHA}")"
else else
commit_messages="$(git log --reverse --format='- %s' "${GITHUB_SHA}")" commit_messages="$(git log --reverse --format='- %s' "${GITEA_SHA}")"
fi fi
full_changelog="https://github.com/${{ github.repository }}/compare/${previous_tag}...${RELEASE_TAG}" full_changelog="${GITEA_SERVER_URL}/${GITEA_REPOSITORY}/compare/${previous_tag}...${RELEASE_TAG}"
else else
commit_messages="$(git log --reverse --format='- %s' "${GITHUB_SHA}")" commit_messages="$(git log --reverse --format='- %s' "${GITEA_SHA}")"
full_changelog="" full_changelog=""
fi fi
@@ -84,8 +90,13 @@ jobs:
fi fi
} > release-notes.md } > release-notes.md
if gh release view "$RELEASE_TAG" >/dev/null 2>&1; then jq -n --arg tag "$RELEASE_TAG" --arg target "$GITEA_SHA" --rawfile body release-notes.md \
gh release edit "$RELEASE_TAG" --title "$RELEASE_TAG" --notes-file release-notes.md '{tag_name: $tag, target_commitish: $target, name: $tag, body: $body, draft: false, prerelease: false}' > release.json
release_id="$(curl --silent --header "Authorization: token ${GITEA_TOKEN}" "${releases_url}/tags/${RELEASE_TAG}" | jq -r '.id // empty')"
if [ -n "$release_id" ]; then
curl --fail-with-body --request PATCH --header "Authorization: token ${GITEA_TOKEN}" --header 'Content-Type: application/json' --data @release.json "${releases_url}/${release_id}"
else else
gh release create "$RELEASE_TAG" --target "${GITHUB_SHA}" --title "$RELEASE_TAG" --notes-file release-notes.md curl --fail-with-body --request POST --header "Authorization: token ${GITEA_TOKEN}" --header 'Content-Type: application/json' --data @release.json "$releases_url"
fi fi
+1 -1
View File
@@ -76,7 +76,7 @@ function fixPlaceholder() {
function getCiVersion() { function getCiVersion() {
const major = process.env.VERSION_MAJOR; const major = process.env.VERSION_MAJOR;
const minor = process.env.VERSION_MINOR; const minor = process.env.VERSION_MINOR;
const patch = process.env.VERSION_PATCH ?? process.env.GITHUB_RUN_NUMBER; const patch = process.env.VERSION_PATCH;
const segments = { major, minor, patch }; const segments = { major, minor, patch };
for (const [name, value] of Object.entries(segments)) { for (const [name, value] of Object.entries(segments)) {