Skip to content

Locked in

Locked in #17

name: Build & Release
on:
push:
tags:
- "v*"
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
outputs:
jar_file: ${{ steps.build.outputs.jar_file }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: temurin
java-version: 17
cache: gradle
- name: Build
id: build
run: |
chmod +x ./gradlew
./gradlew build
JAR=$(ls build/libs/*.jar | grep -v sources | head -1)
echo "jar_file=$JAR" >> $GITHUB_OUTPUT
release:
needs: build
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Extract changelog section
id: changelog
run: |
TAG="${GITHUB_REF_NAME}"
# Extract the section for this version
BODY=$(awk "/^## $TAG/{flag=1;next}/^## /{flag=0}flag" CHANGELOG.md)
# Fallback if there's no entry
if [ -z "$BODY" ]; then
BODY="No changelog entry found for $TAG."
fi
echo "body<<EOF" >> $GITHUB_OUTPUT
echo "$BODY" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT
- name: Create GitHub Release
id: create_release
uses: actions/create-release@v1
with:
tag_name: ${{ github.ref_name }}
release_name: ${{ github.ref_name }}
body: ${{ steps.changelog.outputs.body }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: ${{ needs.build.outputs.jar_file }}
asset_name: $(basename ${{ needs.build.outputs.jar_file }})
asset_content_type: application/java-archive