name: Server integrations on: push: branches: ['**'] paths: - 'integrations/**' - '.github/workflows/integrations.yml' pull_request: paths: - 'integrations/**' - '.github/workflows/integrations.yml' workflow_dispatch: workflow_call: inputs: version: type: string default: '0.4.0' permissions: contents: read jobs: paper: name: Paper and protocol tests runs-on: ubuntu-24.04 steps: - name: Checkout repository uses: actions/checkout@v5 - name: Setup Java 21 uses: actions/setup-java@v5 with: distribution: temurin java-version: '21' - name: Install Gradle 8.10.2 run: | curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle 8.10.2 gradle --version - name: Build Paper plugin and run tests run: | gradle -p integrations \ :common:test \ :paper:build \ -PreleaseVersion="${{ inputs.version || '0.4.0' }}" - name: Upload Paper JAR uses: actions/upload-artifact@v4 with: name: server-paper path: integrations/paper/build/libs/scopenet-paper-*.jar if-no-files-found: error - name: Upload integration test reports if: failure() uses: actions/upload-artifact@v4 with: name: integration-test-reports path: integrations/common/build/reports/tests/ mods: name: ${{ matrix.loader }} / ${{ matrix.mc.version }} runs-on: ubuntu-24.04 strategy: fail-fast: false matrix: loader: - fabric - forge mc: - version: '1.20.1' java: '21' gradle: '8.10.2' - version: '1.21.1' java: '21' gradle: '8.10.2' - version: '26.1.2' java: '25' gradle: '9.6.0' - version: '26.2' java: '25' gradle: '9.6.0' - version: '26.3' java: '25' gradle: '9.6.0' steps: - name: Checkout repository uses: actions/checkout@v5 - name: Setup Java uses: actions/setup-java@v5 with: distribution: temurin java-version: ${{ matrix.mc.java }} - name: Install Gradle run: | curl -s "https://get.sdkman.io" | bash source "$HOME/.sdkman/bin/sdkman-init.sh" sdk install gradle ${{ matrix.mc.gradle }} gradle --version - name: Build ${{ matrix.loader }} ${{ matrix.mc.version }} run: | gradle -p integrations \ -Ploader=${{ matrix.loader }} \ -PmcVersion=${{ matrix.mc.version }} \ -PreleaseVersion="${{ inputs.version || '0.4.0' }}" \ :${{ matrix.loader }}:build - name: Audit Fabric hooks during server bootstrap if: matrix.loader == 'fabric' run: | gradle -p integrations \ -Ploader=fabric \ -PmcVersion=${{ matrix.mc.version }} \ -PreleaseVersion="${{ inputs.version || '0.4.0' }}" \ -PverifyMixins=true \ :fabric:runServer - name: Upload Mod JAR uses: actions/upload-artifact@v4 with: name: server-${{ matrix.loader }}-${{ matrix.mc.version }} path: integrations/${{ matrix.loader }}/build/libs/scopenet-${{ matrix.loader }}-${{ matrix.mc.version }}-*.jar if-no-files-found: error