Creates an automated Gitea release with changelog when a tag (v*) is pushed. Requires GITEA_TOKEN secret in Gitea with repository write access.
67 lines
1.9 KiB
YAML
67 lines
1.9 KiB
YAML
name: Create Release
|
|
on:
|
|
push:
|
|
tags:
|
|
- "v*"
|
|
jobs:
|
|
release:
|
|
runs-on: shell
|
|
steps:
|
|
- name: Checkout
|
|
run: |
|
|
git fetch origin --prune --tags
|
|
git checkout -f "${{ gitea.ref_name }}"
|
|
|
|
- name: Generate Release Notes
|
|
id: notes
|
|
run: |
|
|
PREV_TAG="$(git tag --sort=-creatordate | head -2 | tail -1 || echo '')"
|
|
if [ -n "$PREV_TAG" ]; then
|
|
RANGE="${PREV_TAG}..${{ gitea.ref_name }}"
|
|
NOTES="$(git log --oneline --no-decorate "${RANGE}" 2>/dev/null || git log --oneline --no-decorate -20)"
|
|
else
|
|
NOTES="$(git log --oneline --no-decorate -30)"
|
|
fi
|
|
echo "NOTES<<EOF" >> "$GITHUB_ENV"
|
|
echo "$NOTES" >> "$GITHUB_ENV"
|
|
echo "EOF" >> "$GITHUB_ENV"
|
|
|
|
echo "VERSION=${{ gitea.ref_name }}" >> "$GITHUB_ENV"
|
|
|
|
echo "=== Release Notes ==="
|
|
echo "$NOTES"
|
|
|
|
- name: Build
|
|
run: |
|
|
cd /var/www/atom-nexst/
|
|
pnpm install --frozen-lockfile
|
|
pnpm prisma:generate
|
|
export SKIP_ENV_VALIDATION=1
|
|
pnpm build
|
|
|
|
- name: Create Release
|
|
run: |
|
|
# Use the Gitea API to create a release
|
|
BODY="## EpicNext-CMS ${{ env.VERSION }}
|
|
|
|
### Changes
|
|
${{ env.NOTES }}
|
|
|
|
---
|
|
_Automated release from Gitea Actions_
|
|
"
|
|
|
|
curl -s -X POST "${{ gitea.api_url }}/repos/${{ gitea.repository }}/releases" \
|
|
-H "Authorization: token ${{ secrets.GITEA_TOKEN }}" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$(cat <<-ENDJSON
|
|
{
|
|
"tag_name": "${{ env.VERSION }}",
|
|
"name": "${{ env.VERSION }}",
|
|
"body": $(echo "$BODY" | jq -Rs '.'),
|
|
"draft": false,
|
|
"prerelease": false
|
|
}
|
|
ENDJSON
|
|
)"
|