From 6ee8b64a382912e4db870812019e285065a9a707 Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 25 Sep 2026 16:33:42 +0200 Subject: [PATCH 1/2] Add release workflow that builds every version and attaches the jars On a published release, build all versions with buildAll using the tag as the mod version, and upload build/allJars/*.jar to the release. Co-Authored-By: Claude Opus 5.5 --- .gitea/workflows/release.yml | 58 ++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) create mode 100644 .gitea/workflows/release.yml diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml new file mode 100644 index 0000000..01507d8 --- /dev/null +++ b/.gitea/workflows/release.yml @@ -0,0 +1,58 @@ +name: Release + +# Publishing a release builds every Minecraft version from the release's tag +# and attaches the mod jars to it. The tag is the mod version (e.g. +# 0.1.1-beta); a leading "v" is dropped. +on: + release: + types: [published] + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set up Java 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + cache: gradle + + - name: Build all versions + env: + TAG: ${{ github.event.release.tag_name }} + run: | + VERSION="${TAG#v}" + echo "Building Saturn Client $VERSION" + chmod +x gradlew + # buildAll remaps every versions/* project in parallel into build/allJars. + ./gradlew buildAll -Pmod_version="$VERSION" --no-daemon --stacktrace + + - name: Upload jars to the release + env: + TOKEN: ${{ secrets.GITEA_TOKEN }} + ASSETS_URL: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}/releases/${{ github.event.release.id }}/assets + run: | + shopt -s nullglob + jars=(build/allJars/*.jar) + if [ ${#jars[@]} -eq 0 ]; then + echo "No jars found in build/allJars" >&2 + exit 1 + fi + + for jar in "${jars[@]}"; do + echo "Uploading $(basename "$jar")" + curl --fail-with-body -sS -X POST \ + -H "Authorization: token $TOKEN" \ + -F "attachment=@$jar" \ + "$ASSETS_URL" + echo + done From 806c4ab6432965c77c7d26f0ea89a71cbdde6c2c Mon Sep 17 00:00:00 2001 From: Klesti Selimaj Date: Fri, 25 Sep 2026 16:34:03 +0200 Subject: [PATCH 2/2] Make mod_version the source of truth for releases; bump to 0.1.1-beta The release workflow no longer overrides mod_version from the tag. Instead it fails early unless the release tag (optionally prefixed with "v") matches mod_version in gradle.properties, so released jars always report the same version as the code the version check sees. Co-Authored-By: Claude Opus 5.5 --- .gitea/workflows/release.yml | 24 ++++++++++++++++-------- gradle.properties | 2 +- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/.gitea/workflows/release.yml b/.gitea/workflows/release.yml index 01507d8..560ad7e 100644 --- a/.gitea/workflows/release.yml +++ b/.gitea/workflows/release.yml @@ -1,8 +1,9 @@ name: Release -# Publishing a release builds every Minecraft version from the release's tag -# and attaches the mod jars to it. The tag is the mod version (e.g. -# 0.1.1-beta); a leading "v" is dropped. +# Publishing a release builds every Minecraft version and attaches the mod jars +# to it. mod_version in gradle.properties is the source of truth: the release +# tag must match it (a leading "v" is allowed), so bump mod_version in a PR +# before tagging the release. on: release: types: [published] @@ -19,6 +20,17 @@ jobs: with: submodules: true + - name: Check tag matches mod_version + env: + TAG: ${{ github.event.release.tag_name }} + run: | + MOD_VERSION="$(sed -n 's/^mod_version=//p' gradle.properties | tr -d '[:space:]')" + if [ "${TAG#v}" != "$MOD_VERSION" ]; then + echo "::error::Release tag '$TAG' doesn't match mod_version '$MOD_VERSION' in gradle.properties. Bump mod_version to '${TAG#v}' on the release branch, or tag the release '$MOD_VERSION'." >&2 + exit 1 + fi + echo "Building Saturn Client $MOD_VERSION" + - name: Set up Java 21 uses: actions/setup-java@v4 with: @@ -27,14 +39,10 @@ jobs: cache: gradle - name: Build all versions - env: - TAG: ${{ github.event.release.tag_name }} run: | - VERSION="${TAG#v}" - echo "Building Saturn Client $VERSION" chmod +x gradlew # buildAll remaps every versions/* project in parallel into build/allJars. - ./gradlew buildAll -Pmod_version="$VERSION" --no-daemon --stacktrace + ./gradlew buildAll --no-daemon --stacktrace - name: Upload jars to the release env: diff --git a/gradle.properties b/gradle.properties index 6598a82..b21030b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,4 +4,4 @@ org.gradle.parallel=true # IntelliJ IDEA is not yet fully compatible with configuration cache, see: https://github.com/FabricMC/fabric-loom/issues/1349 org.gradle.configuration-cache=false -mod_version=0.1.0-beta3 +mod_version=0.1.1-beta