1+ name : Publish to Maven & Create GitHub Release
2+
3+ on :
4+ push :
5+ branches :
6+ - ' version/*'
7+ workflow_dispatch :
8+
9+ env :
10+ SLNE_SNAPSHOTS_REPO_USERNAME : ${{ secrets.SLNE_SNAPSHOTS_REPO_USERNAME }}
11+ SLNE_SNAPSHOTS_REPO_PASSWORD : ${{ secrets.SLNE_SNAPSHOTS_REPO_PASSWORD }}
12+ SLNE_RELEASES_REPO_USERNAME : ${{ secrets.SLNE_RELEASES_REPO_USERNAME }}
13+ SLNE_RELEASES_REPO_PASSWORD : ${{ secrets.SLNE_RELEASES_REPO_PASSWORD }}
14+ MODULE_REGEX : " surf-essentials.*-all\\ .jar$"
15+ DEFAULT_BRANCH : ${{ github.event.repository.default_branch }}
16+
17+ jobs :
18+ build :
19+ runs-on : ubuntu-latest
20+ environment : production
21+ steps :
22+ - name : Collect Workflow Telemetry
23+ uses : catchpoint/workflow-telemetry-action@v2
24+
25+ - name : Checkout Repository
26+ uses : actions/checkout@v4
27+ with :
28+ fetch-depth : 0
29+
30+ - name : Cache Gradle packages
31+ uses : actions/cache@v3
32+ with :
33+ path : |
34+ ~/.gradle/caches
35+ ~/.gradle/wrapper
36+ key : gradle-${{ runner.os }}-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
37+ restore-keys : gradle-${{ runner.os }}-
38+
39+ - name : Setup JDK
40+ uses : actions/setup-java@v4
41+ with :
42+ distribution : ' graalvm'
43+ java-version : ' 24'
44+
45+ - name : Build all modules with Gradle
46+ run : ./gradlew build shadowJar --parallel --no-scan
47+
48+ - name : Publish all modules to Maven
49+ run : ./gradlew publish --parallel --no-scan
50+
51+ - name : Extract Project Version and Snapshot Flag from Gradle
52+ id : get_version
53+ run : |
54+ VERSION=$(./gradlew properties --no-daemon \
55+ | grep '^version:' \
56+ | awk '{print $2}')
57+ SNAPSHOT_FLAG=$(./gradlew properties --no-daemon \
58+ | grep '^snapshot:' \
59+ | awk '{print $2}')
60+ if [ "$SNAPSHOT_FLAG" = "true" ]; then
61+ VERSION="${VERSION}-SNAPSHOT"
62+ fi
63+ echo "VERSION=$VERSION" >> $GITHUB_ENV
64+ echo "SNAPSHOT_FLAG=$SNAPSHOT_FLAG" >> $GITHUB_ENV
65+
66+ - name : Determine release flags
67+ run : |
68+ CURRENT_BRANCH=${GITHUB_REF#refs/heads/}
69+ # prerelease only for snapshots
70+ if [ "${SNAPSHOT_FLAG}" = "true" ]; then
71+ echo "PRERELEASE=true" >> $GITHUB_ENV
72+ else
73+ echo "PRERELEASE=false" >> $GITHUB_ENV
74+ fi
75+ # make_latest false for snapshots or non-default branches
76+ if [ "${SNAPSHOT_FLAG}" = "true" ] || [ "${CURRENT_BRANCH}" != "${DEFAULT_BRANCH}" ]; then
77+ echo "MAKE_LATEST=false" >> $GITHUB_ENV
78+ else
79+ echo "MAKE_LATEST=true" >> $GITHUB_ENV
80+ fi
81+
82+ - name : Find and filter JAR files
83+ id : find_jars
84+ run : |
85+ echo "JAR_FILES<<EOF" >> $GITHUB_ENV
86+ find . -path "**/build/libs/*.jar" \
87+ | grep -E "${{ env.MODULE_REGEX }}" \
88+ >> $GITHUB_ENV
89+ echo "EOF" >> $GITHUB_ENV
90+
91+ - name : Create GitHub Release
92+ uses : softprops/action-gh-release@v2
93+ with :
94+ tag_name : v${{ env.VERSION }}
95+ name : Release ${{ env.VERSION }}
96+ draft : false
97+ prerelease : ${{ env.PRERELEASE }}
98+ make_latest : ${{ env.MAKE_LATEST }}
99+ files : ${{ env.JAR_FILES }}
100+ generate_release_notes : true
101+ env :
102+ GITHUB_TOKEN : ${{ secrets.GITHUB_TOKEN }}
0 commit comments