name: Build Samples on: workflow_dispatch: pull_request: branches: [ main ] paths: - 'samples/**' push: branches: [ main ] paths: - 'samples/**' concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} # Cancel only when the run is NOT on `main` branch cancel-in-progress: ${{ github.ref != 'refs/heads/main' }} env: JAVA_VERSION: 21 JAVA_DISTRIBUTION: temurin GRADLE_OPTS: "-Dorg.gradle.daemon=false" jobs: build: runs-on: ubuntu-latest strategy: fail-fast: false matrix: sample: - kotlin-mcp-client - kotlin-mcp-server - simple-streamable-server - weather-stdio-server name: Build Sample (${{ matrix.sample }}) timeout-minutes: 10 steps: - uses: actions/checkout@v7 - name: Set up JDK ${{ env.JAVA_VERSION }} uses: actions/setup-java@v6 with: java-version: ${{ env.JAVA_VERSION }} distribution: ${{ env.JAVA_DISTRIBUTION }} - name: Setup Gradle uses: gradle/actions/setup-gradle@v6.3.0 with: validate-wrappers: true add-job-summary: 'always' cache-read-only: ${{ github.ref != 'refs/heads/main' }} - name: "Build Sample: ${{ matrix.sample }}" working-directory: ./samples/${{ matrix.sample }} run: ./gradlew build - name: Upload Reports if: failure() uses: actions/upload-artifact@v7 with: name: reports-samples-${{ matrix.sample }} path: | **/build/reports/