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<> $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 }}