name: CI on: push: pull_request: permissions: contents: read concurrency: group: ci-${{ github.ref }} cancel-in-progress: true jobs: verify: name: Verify (core:check + spi:build) runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 25 uses: actions/setup-java@v4 with: distribution: temurin java-version: '25' - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Run core checks and build spi run: ./gradlew :core:check :spi:build :probe:deserializationProbe --console=plain --stacktrace build-artifacts: name: Build ${{ matrix.platform }} needs: verify runs-on: ubuntu-latest strategy: fail-fast: false matrix: include: - platform: bukkit task: buildBukkit - platform: fabric task: buildFabric - platform: forge task: buildForge - platform: neoforge task: buildNeoforge steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 25 uses: actions/setup-java@v4 with: distribution: temurin java-version: '25' - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Build ${{ matrix.platform }} artifact run: ./gradlew ${{ matrix.task }} --console=plain --stacktrace - name: Upload ${{ matrix.platform }} jar uses: actions/upload-artifact@v4 with: name: iris-${{ matrix.platform }} path: dist/*.jar retention-days: 14 if-no-files-found: error release-bundle: name: Release bundle (buildAll) if: startsWith(github.ref, 'refs/tags/v') needs: verify runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Set up JDK 25 uses: actions/setup-java@v4 with: distribution: temurin java-version: '25' - name: Set up Gradle uses: gradle/actions/setup-gradle@v4 - name: Build all platforms run: ./gradlew buildAll --console=plain --stacktrace - name: Upload release bundle uses: actions/upload-artifact@v4 with: name: iris-release-bundle path: dist/*.jar retention-days: 90 if-no-files-found: error