1+ name : " ⚙️ CI & Release Workflow"
2+ on :
3+ push :
4+ pull_request :
5+ types : [ opened, reopened ]
6+
7+ env :
8+ REGISTRY : ghcr.io
9+ JAVA_VERSION : ' 21'
10+ JAVA_DISTRIBUTION : ' temurin'
11+
12+ permissions :
13+ contents : write
14+ packages : write
15+
16+ jobs :
17+ test :
18+ name : ✅ Run Tests
19+ runs-on : ubuntu-latest
20+ steps :
21+ - name : 📥 Checkout Code
22+ uses : actions/checkout@v4
23+
24+ - name : ☕ Setup Java ${{ env.JAVA_VERSION }}
25+ uses : actions/setup-java@v4
26+ with :
27+ distribution : ${{ env.JAVA_DISTRIBUTION }}
28+ java-version : ${{ env.JAVA_VERSION }}
29+
30+ - name : " ⚡ Setup Gradle with Cache"
31+ uses : gradle/actions/setup-gradle@v4
32+
33+ - name : " 🧪 Run Unit Tests"
34+ run : ./gradlew test
35+ releaser :
36+ name : " 🏁 Release"
37+ if : startsWith(github.ref, 'refs/tags/')
38+ needs :
39+ - test
40+ runs-on : ubuntu-latest
41+ steps :
42+ - name : " 📥 Checkout Code (Full History)"
43+ uses : actions/checkout@v4
44+ with :
45+ fetch-depth : 0
46+
47+ - name : ☕ Setup Java ${{ env.JAVA_VERSION }}
48+ uses : actions/setup-java@v4
49+ with :
50+ distribution : ${{ env.JAVA_DISTRIBUTION }}
51+ java-version : ${{ env.JAVA_VERSION }}
52+
53+ - name : ⚡ Setup Gradle with Cache
54+ uses : gradle/actions/setup-gradle@v4
55+
56+ - name : " 🚀 Publish to Maven Central"
57+ env :
58+ GPG_KEY : ${{ secrets.GPG_KEY }}
59+ GPG_PASSPHRASE : ${{ secrets.GPG_PASSPHRASE }}
60+ SONATYPE_USERNAME : ${{ secrets.SONATYPE_USERNAME }}
61+ SONATYPE_PASSWORD : ${{ secrets.SONATYPE_PASSWORD }}
62+ run : |
63+ RAW_TAG="${GITHUB_REF##*/}"
64+ VERSION="${RAW_TAG#v}"
65+
66+ [[ "$VERSION" =~ ^[0-9]+(\.[0-9]+)*$ ]] || exit -1
67+ ./gradlew publishToCentralPortal -Pversion="$VERSION"
0 commit comments