Files
PluginUtils/.github/workflows/release.yml
2026-06-10 23:47:09 +03:00

107 lines
3.3 KiB
YAML

name: Publish Release
on:
release:
types: [published]
env:
# --- GLOBAL OVERRIDES ---
# Modify these variables to override default GitHub context
PROJECT_NAME: ${{ github.event.repository.name }}
RELEASE_TAG: ${{ github.ref_name }}
COMMIT_URL: https://gitea.cheppyjam.ru/${{ github.repository }}/commit # overrode: ${{ github.server_url }}
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: Set up JDK
uses: actions/setup-java@v4
with:
java-version: '25'
distribution: 'temurin'
cache: 'gradle'
- name: Configure Outputs
id: config
run: |
VERSION=${RELEASE_TAG#v}
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "RELEASE_BODY<<EOF" >> $GITHUB_ENV
echo "${{ github.event.release.body }}" >> $GITHUB_ENV
echo "EOF" >> $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: Make gradlew executable
run: chmod +x gradlew
- name: Build with Gradle
run: ./gradlew build
- 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: build/libs/*.jar
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}