initial commit
This commit is contained in:
107
.github/workflows/release.yml
vendored
Normal file
107
.github/workflows/release.yml
vendored
Normal file
@@ -0,0 +1,107 @@
|
||||
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 }}
|
||||
Reference in New Issue
Block a user