Skip to content

Commit b31e5c6

Browse files
committed
Add Maven publishing support and GitHub Actions for release automation
1 parent e48b5c3 commit b31e5c6

File tree

2 files changed

+94
-0
lines changed

2 files changed

+94
-0
lines changed

.github/workflows/publish.yml

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
name: Publish to Maven & Create GitHub Release
2+
3+
on:
4+
push:
5+
branches:
6+
- master
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+
DEFAULT_BRANCH: ${{ github.event.repository.default_branch }}
15+
16+
jobs:
17+
publish:
18+
runs-on: ubuntu-latest
19+
environment: production
20+
steps:
21+
- name: Collect Workflow Telemetry
22+
uses: catchpoint/workflow-telemetry-action@v2
23+
24+
- name: Checkout Repository
25+
uses: actions/checkout@v6
26+
with:
27+
fetch-depth: 0
28+
29+
- name: Setup Java
30+
uses: actions/setup-java@v5
31+
with:
32+
distribution: "graalvm"
33+
java-version: 21
34+
35+
- name: Setup Gradle
36+
uses: gradle/actions/setup-gradle@v5
37+
38+
- name: Build with Gradle
39+
run: ./gradlew shadowJar
40+
41+
- name: Publish to Maven
42+
run: ./gradlew publish
43+
44+
- name: Extract Project Version and Snapshot Flag from Gradle
45+
id: get_version
46+
run: |
47+
VERSION=$(./gradlew properties --no-daemon \
48+
| grep '^version:' \
49+
| awk '{print $2}')
50+
51+
if [[ "$VERSION" == *SNAPSHOT* ]]; then
52+
SNAPSHOT_FLAG=true
53+
else
54+
SNAPSHOT_FLAG=false
55+
fi
56+
57+
echo "VERSION=$VERSION" >> $GITHUB_ENV
58+
echo "SNAPSHOT_FLAG=$SNAPSHOT_FLAG" >> $GITHUB_ENV
59+
60+
- name: Determine release flags
61+
run: |
62+
CURRENT_BRANCH=${GITHUB_REF#refs/heads/}
63+
# prerelease only for snapshots
64+
if [ "${SNAPSHOT_FLAG}" = "true" ]; then
65+
echo "PRERELEASE=true" >> $GITHUB_ENV
66+
else
67+
echo "PRERELEASE=false" >> $GITHUB_ENV
68+
fi
69+
# make_latest false for snapshots or non-default branches
70+
if [ "${SNAPSHOT_FLAG}" = "true" ] || [ "${CURRENT_BRANCH}" != "${DEFAULT_BRANCH}" ]; then
71+
echo "MAKE_LATEST=false" >> $GITHUB_ENV
72+
else
73+
echo "MAKE_LATEST=true" >> $GITHUB_ENV
74+
fi
75+
76+
- name: Create GitHub Release
77+
uses: softprops/action-gh-release@v2
78+
with:
79+
tag_name: v${{ env.VERSION }}
80+
name: Release ${{ env.VERSION }}
81+
draft: false
82+
prerelease: ${{ env.PRERELEASE }}
83+
make_latest: ${{ env.MAKE_LATEST }}
84+
generate_release_notes: true
85+
env:
86+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

build.gradle.kts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import dev.slne.surf.surfapi.gradle.util.slneReleases
2+
13
plugins {
24
id("dev.slne.surf.surfapi.gradle.core") version "1.21.11+"
35
// id("dev.slne.surf.surfapi.gradle.standalone") version "1.21.11+" /* Uncomment to use tests */
@@ -18,6 +20,12 @@ dependencies {
1820
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0")
1921
}
2022

23+
publishing {
24+
repositories {
25+
slneReleases()
26+
}
27+
}
28+
2129
tasks.test {
2230
useJUnitPlatform()
2331
}

0 commit comments

Comments
 (0)