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