1+ name: Build and Release Addon
2+
3+ on:
4+ push:
5+ branches:
6+ - main
7+ workflow_dispatch:
8+ inputs:
9+ version:
10+ description: 'Release version (e.g. 1.2.3)'
11+ required: true
12+ type: string
13+ release_name:
14+ description: 'Optional release title override'
15+ required: false
16+ type: string
17+ prerelease:
18+ description: 'Mark the manual release as a prerelease'
19+ required: true
20+ default: false
21+ type: boolean
22+
23+ permissions:
24+ contents: write
25+
26+ jobs:
27+ build:
28+ runs-on: ubuntu-latest
29+
30+ steps:
31+ - name: Checkout Repository
32+ uses: actions/checkout@v4
33+ with:
34+ persist-credentials: false
35+
36+ - name: Set up Gradle
37+ uses: gradle/actions/setup-gradle@v4
38+
39+ - name: Set up Java
40+ uses: actions/setup-java@v4
41+ with:
42+ distribution: temurin
43+ java-version: 21
44+
45+ - name: Determine release metadata
46+ id: meta
47+ run: |
48+ if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
49+ TAG="v${{ github.event.inputs.version }}"
50+ RELEASE_NAME="${{ github.event.inputs.release_name }}"
51+ if [ -z "$RELEASE_NAME" ]; then
52+ RELEASE_NAME="$TAG"
53+ fi
54+ if [ "${{ github.event.inputs.prerelease }}" = "true" ]; then
55+ PRERELEASE="true"
56+ else
57+ PRERELEASE="false"
58+ fi
59+ else
60+ # Use version from gradle.properties + timestamp for dev builds
61+ VERSION=$(grep "^mod_version=" gradle.properties | cut -d'=' -f2)
62+ TIMESTAMP=$(date -u +%Y%m%d-%H%M%S)
63+ TAG="v${VERSION}-dev.${TIMESTAMP}"
64+ RELEASE_NAME="Dev Build (${TIMESTAMP})"
65+ PRERELEASE="true"
66+ fi
67+ {
68+ echo "tag_name=$TAG"
69+ echo "release_name=$RELEASE_NAME"
70+ echo "prerelease=$PRERELEASE"
71+ } >> "$GITHUB_OUTPUT"
72+
73+ - name: Make Gradle wrapper executable
74+ run: chmod +x ./gradlew
75+
76+ - name: Build with Gradle
77+ run: ./gradlew build --no-configuration-cache
78+
79+ - name: Publish Release
80+ uses: softprops/action-gh-release@v2
81+ env:
82+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
83+ with:
84+ tag_name: ${{ steps.meta.outputs.tag_name }}
85+ name: ${{ steps.meta.outputs.release_name }}
86+ prerelease: ${{ steps.meta.outputs.prerelease }}
87+ files: build/libs/*.jar
0 commit comments