Java: Make it so slash command responses are accessible via RPC #436
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Java SDK Tests" | |
| on: | |
| push: | |
| branches: | |
| - main | |
| paths: | |
| - "java/**" | |
| - "test/**" | |
| - ".github/workflows/java-sdk-tests.yml" | |
| - ".github/actions/setup-copilot/**" | |
| - ".github/actions/java-test-report/**" | |
| pull_request: | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| paths: | |
| - "java/**" | |
| - "test/**" | |
| - ".github/workflows/java-sdk-tests.yml" | |
| - ".github/actions/setup-copilot/**" | |
| - ".github/actions/java-test-report/**" | |
| - "!**/*.md" | |
| - "!**/LICENSE*" | |
| - "!**/.gitignore" | |
| - "!**/.editorconfig" | |
| - "!**/*.png" | |
| - "!**/*.jpg" | |
| - "!**/*.jpeg" | |
| - "!**/*.gif" | |
| - "!**/*.svg" | |
| workflow_dispatch: | |
| merge_group: | |
| permissions: | |
| contents: write | |
| checks: write | |
| pull-requests: write | |
| jobs: | |
| java-sdk: | |
| name: "Java SDK Tests (JDK ${{ matrix.test-jdk }})" | |
| if: github.event.repository.fork == false | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| test-jdk: ["25", "17"] | |
| defaults: | |
| run: | |
| shell: bash | |
| working-directory: ./java | |
| steps: | |
| - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | |
| with: | |
| persist-credentials: false | |
| - uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 | |
| with: | |
| java-version: "25" | |
| distribution: "microsoft" | |
| cache: "maven" | |
| - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 | |
| with: | |
| node-version: 22 | |
| - name: Build SDK and set up test harness | |
| run: mvn test-compile jar:jar | |
| - name: Verify Javadoc generation | |
| if: matrix.test-jdk == '25' | |
| run: mvn javadoc:javadoc -q | |
| - name: Verify CLI works | |
| run: node target/copilot-sdk/nodejs/node_modules/@github/copilot/index.js --version | |
| - name: Run spotless check | |
| if: matrix.test-jdk == '25' | |
| run: | | |
| mvn spotless:check | |
| if [ $? -ne 0 ]; then | |
| echo "❌ spotless:check failed. Please run 'mvn spotless:apply' in java" | |
| exit 1 | |
| fi | |
| echo "✅ spotless:check passed" | |
| - name: Run Java SDK tests (JDK 25) | |
| if: matrix.test-jdk == '25' | |
| env: | |
| CI: "true" | |
| run: mvn verify -Dskip.test.harness=true | |
| - name: Switch to JDK 17 | |
| if: matrix.test-jdk == '17' | |
| uses: actions/setup-java@be666c2fcd27ec809703dec50e508c2fdc7f6654 # v5 | |
| with: | |
| java-version: "17" | |
| distribution: "microsoft" | |
| - name: Run Java SDK tests (JDK 17, no recompilation) | |
| if: matrix.test-jdk == '17' | |
| env: | |
| CI: "true" | |
| run: | | |
| echo "Running tests against JDK 25-built classes using JDK 17 runtime..." | |
| java -version | |
| mvn jacoco:prepare-agent@wire-up-coverage-instrumentation antrun:run@print-test-jdk-banner surefire:test failsafe:integration-test failsafe:verify jacoco:report@build-coverage-report-from-tests -Denforcer.skip=true | |
| - name: Upload test results for site generation | |
| if: success() && github.ref == 'refs/heads/main' && matrix.test-jdk == '25' | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: test-results-for-site | |
| path: | | |
| java/target/jacoco-test-results/sdk-tests.exec | |
| java/target/surefire-reports/ | |
| java/target/surefire-reports-isolated/ | |
| retention-days: 1 | |
| - name: Generate JaCoCo badge | |
| if: success() && github.ref == 'refs/heads/main' && matrix.test-jdk == '25' | |
| working-directory: . | |
| run: bash .github/scripts/generate-java-coverage-badge.sh java/target/site/jacoco-coverage/jacoco.csv .github/badges | |
| - name: Create PR for JaCoCo badge update | |
| if: success() && github.ref == 'refs/heads/main' && matrix.test-jdk == '25' | |
| uses: peter-evans/create-pull-request@5f6978faf089d4d20b00c7766989d076bb2fc7f1 # v7 | |
| with: | |
| commit-message: "Update Java JaCoCo coverage badge" | |
| title: "Update Java JaCoCo coverage badge" | |
| body: "Automated Java JaCoCo coverage badge update from CI." | |
| branch: auto/update-java-jacoco-badge | |
| add-paths: .github/badges/ | |
| delete-branch: true | |
| - name: Generate Test Report Summary | |
| if: always() | |
| uses: ./.github/actions/java-test-report | |
| with: | |
| title: "Copilot Java SDK :: Test Results JDK ${{ matrix.test-jdk }}" | |
| - name: Upload test results on failure | |
| if: failure() | |
| uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7 | |
| with: | |
| name: java-test-results-jdk-${{ matrix.test-jdk }} | |
| path: | | |
| java/target/surefire-reports/ | |
| java/target/surefire-reports-isolated/ | |
| java/target/failsafe-reports/ | |
| retention-days: 7 |