Files
AXOLOTsh fb096692c9
All checks were successful
Publish Release / build-and-release (release) Successful in 3s
fix: release workflow commit url
2026-07-15 00:59:55 +03:00

100 lines
3.1 KiB
YAML

name: Publish Release
on:
release:
types: [published]
env:
# --- GLOBAL OVERRIDES ---
# Modify these variables to override default GitHub context values
PROJECT_NAME: ${{ github.event.repository.name }}
RELEASE_TAG: ${{ github.ref_name }}
RELEASE_BODY: ${{ github.event.release.body }}
COMMIT_URL: commit
CHANGELOG_FILE: "changelog.md"
# ------------------------
jobs:
build-and-release:
runs-on: ubuntu-latest
permissions:
contents: write
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Configure Outputs
id: config
run: |
VERSION=${RELEASE_TAG#v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "ARCHIVE_NAME=${PROJECT_NAME}-v${VERSION}.zip" >> $GITHUB_ENV
- name: Generate Changelog
id: changelog
run: |
git fetch --prune --unshallow --tags || git fetch --tags
echo "# Release Notes" > $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
if [ ! -z "$RELEASE_BODY" ]; then
echo "$RELEASE_BODY" >> $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
fi
echo "## Changelog" >> $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
PREVIOUS_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "")
if [ -z "$PREVIOUS_TAG" ]; then
LOG_RANGE="${RELEASE_TAG}"
echo "This is the first release." >> $CHANGELOG_FILE
else
LOG_RANGE="${PREVIOUS_TAG}..${RELEASE_TAG}"
fi
FORMAT_STR="* %s ([\`%h\`]($COMMIT_URL/%H))"
FEATS=$(git log $LOG_RANGE --grep="^feat" --pretty=format:"$FORMAT_STR" || true)
if [ ! -z "$FEATS" ]; then
echo "### New Features" >> $CHANGELOG_FILE
echo "$FEATS" >> $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
fi
FIXES=$(git log $LOG_RANGE --grep="^fix" --pretty=format:"$FORMAT_STR" || true)
if [ ! -z "$FIXES" ]; then
echo "### Bug Fixes" >> $CHANGELOG_FILE
echo "$FIXES" >> $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
fi
MAINTENANCE=$(git log $LOG_RANGE --grep="^chore\|^refactor\|^perf\|^style" --pretty=format:"$FORMAT_STR" || true)
if [ ! -z "$MAINTENANCE" ]; then
echo "### Maintenance" >> $CHANGELOG_FILE
echo "$MAINTENANCE" >> $CHANGELOG_FILE
echo "" >> $CHANGELOG_FILE
fi
- name: Create Archive
run: |
git archive --format zip --output ${{ env.ARCHIVE_NAME }} HEAD \
':(exclude).github/' \
':(exclude).git/' \
':(exclude).gitignore'
- name: Update Release
uses: softprops/action-gh-release@v2
with:
tag_name: ${{ env.RELEASE_TAG }}
name: "${{ env.PROJECT_NAME }} ${{ env.RELEASE_TAG }}"
body_path: ${{ env.CHANGELOG_FILE }}
files: ${{ env.ARCHIVE_NAME }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}