name: Build on: workflow_dispatch: pull_request: branches: [ main ] push: branches: [ main ] 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' }} jobs: validate-pr: runs-on: macos-latest-xlarge name: Validate PR env: JAVA_OPTS: "-Xmx8g -Dfile.encoding=UTF-8 -Djava.awt.headless=true -Dkotlin.daemon.jvm.options=-Xmx6g" steps: - uses: actions/checkout@v5 - name: Set up JDK 21 uses: actions/setup-java@v5 with: java-version: '21' distribution: 'temurin' - name: Setup Gradle uses: gradle/actions/setup-gradle@v4 with: add-job-summary: 'always' cache-read-only: true - name: Build with Gradle run: |- ./gradlew clean ktlintCheck build koverLog koverHtmlReport ./gradlew :kotlin-sdk-core:publishToMavenLocal :kotlin-sdk-client:publishToMavenLocal :kotlin-sdk-server:publishToMavenLocal - name: Build Kotlin-MCP-Client Sample working-directory: ./samples/kotlin-mcp-client run: ./../../gradlew clean build - name: Build Kotlin-MCP-Server Sample working-directory: ./samples/kotlin-mcp-server run: ./../../gradlew clean build - name: Build Weather-Stdio-Server Sample working-directory: ./samples/weather-stdio-server run: ./../../gradlew clean build - name: Upload Reports if: ${{ !cancelled() }} uses: actions/upload-artifact@v4 with: name: reports path: | **/build/reports/ - name: Publish Test Report uses: mikepenz/action-junit-report@v5 if: ${{ !cancelled() }} # always run even if the previous step fails with: report_paths: '**/test-results/**/TEST-*.xml' detailed_summary: true flaky_summary: true include_empty_in_summary: false include_time_in_summary: true annotate_only: true - name: Disable Auto-Merge on Fail if: failure() && github.event_name == 'pull_request' run: gh pr merge --disable-auto "$PR_URL" env: PR_URL: ${{github.event.pull_request.html_url}} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}