Add the process protocol, Linux process service and client #961
Workflow file for this run
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: core-check | |
| on: | |
| workflow_call: | |
| inputs: | |
| ref: | |
| description: Source commit to check | |
| required: false | |
| type: string | |
| native-artifacts: | |
| description: Retain native installers for a release build | |
| type: boolean | |
| default: false | |
| push: | |
| branches: [main] | |
| pull_request: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: core-check-${{ github.workflow }}-${{ inputs.ref && github.run_id || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| plan: | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 5 | |
| outputs: | |
| plan: ${{ steps.select.outputs.plan }} | |
| jobs: ${{ steps.select.outputs.jobs }} | |
| image: ${{ steps.select.outputs.image }} | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| fetch-depth: 2 | |
| - name: Select checks from the integrated change | |
| id: select | |
| env: | |
| REQUESTED_REF: ${{ inputs.ref }} | |
| run: python3 scripts/ci_plan.py plan | |
| hygiene: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'hygiene') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - name: Verify names, documentation and CI selection invariants | |
| run: make check-names check-docs check-ci | |
| backend: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'backend') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 40 | |
| services: | |
| postgres: | |
| image: postgres:16-alpine | |
| env: | |
| POSTGRES_DB: oac_core_ci_tests | |
| POSTGRES_USER: agents_api | |
| POSTGRES_PASSWORD: core_test_only | |
| ports: | |
| - 5432/tcp | |
| options: >- | |
| --health-cmd "pg_isready -U agents_api -d oac_core_ci_tests" | |
| --health-interval 5s | |
| --health-timeout 5s | |
| --health-retries 10 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - name: Select Go caches | |
| id: source | |
| run: | | |
| echo "revision=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" | |
| echo "GOCACHE=$HOME/.oac/cache/go-build" >> "$GITHUB_ENV" | |
| echo "GOMODCACHE=$HOME/.oac/cache/go-mod" >> "$GITHUB_ENV" | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: go.mod | |
| cache: false | |
| - uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.oac/cache/go-build | |
| ~/.oac/cache/go-mod | |
| key: core-go-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}-backend-${{ steps.source.outputs.revision }} | |
| restore-keys: | | |
| core-go-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}-backend- | |
| core-go-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}- | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: '22' | |
| - name: Install native Go prerequisites | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y build-essential pkg-config libssl-dev | |
| - name: Verify dedicated test database | |
| env: | |
| OAC_TEST_DATABASE_URL: postgres://agents_api:core_test_only@127.0.0.1:${{ job.services.postgres.ports['5432'] }}/oac_core_ci_tests?sslmode=disable | |
| run: | | |
| echo "OAC_TEST_DATABASE_URL=$OAC_TEST_DATABASE_URL" >> "$GITHUB_ENV" | |
| make check-database | |
| - name: Verify generated SQL queries | |
| run: make check-sqlc | |
| - name: Test Runtime and shared Go contracts | |
| run: make check-go | |
| - name: Test microsandbox provider and Linux helper | |
| run: make check-microsandbox-provider | |
| - name: Build and test standalone Core and persistence | |
| run: make check-core | |
| - name: Build execution daemon | |
| run: make build-daemon | |
| distribution: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'distribution') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - name: Select Go caches | |
| id: source | |
| run: | | |
| echo "revision=$(git rev-parse HEAD)" >> "$GITHUB_OUTPUT" | |
| echo "GOCACHE=$HOME/.oac/cache/go-build" >> "$GITHUB_ENV" | |
| echo "GOMODCACHE=$HOME/.oac/cache/go-mod" >> "$GITHUB_ENV" | |
| - uses: actions/setup-go@v7 | |
| with: | |
| go-version-file: go.mod | |
| cache: false | |
| - uses: actions/cache@v6 | |
| with: | |
| path: | | |
| ~/.oac/cache/go-build | |
| ~/.oac/cache/go-mod | |
| key: core-go-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}-distribution-${{ steps.source.outputs.revision }} | |
| restore-keys: | | |
| core-go-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}-distribution- | |
| core-go-v2-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}-tooling- | |
| core-go-v1-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('**/go.mod', '**/go.sum') }}- | |
| - uses: actions/setup-node@v6 | |
| with: | |
| node-version: '22' | |
| - name: Verify Harness catalog and installer schema | |
| run: make check-harness-catalog | |
| - name: Test distribution, installer and console packaging | |
| run: make check-distribution | |
| harness: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'harness') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 20 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - uses: ./.github/actions/node | |
| - name: Test and package Harness adapters | |
| run: make check-claude-sdk check-mcode-harness | |
| example: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'example') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - uses: ./.github/actions/node | |
| - name: Install dependencies and example acceptance browser | |
| run: | | |
| make node-deps | |
| pnpm exec playwright install --with-deps chrome | |
| - name: Test and build optional example with browser acceptance | |
| run: make check-example | |
| - name: Upload browser failure evidence | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: example-acceptance-${{ github.run_attempt }} | |
| path: | | |
| example/*/playwright-report/ | |
| example/*/test-results/ | |
| retention-days: 7 | |
| compression-level: 0 | |
| if-no-files-found: ignore | |
| web: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'web') | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - uses: ./.github/actions/node | |
| - name: Typecheck, test and build Web and clients | |
| run: make check-web-unit | |
| web-acceptance: | |
| needs: [plan, web] | |
| if: needs.web.result == 'success' && needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'web-acceptance') | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| shard: [1, 2] | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - uses: ./.github/actions/node | |
| - name: Install dependencies and Web acceptance browser | |
| run: | | |
| make node-deps | |
| pnpm exec playwright install --with-deps chrome | |
| - name: Verify Web workflows against isolated fixtures | |
| run: make check-web-acceptance OAC_WEB_TEST_SHARD=${{ matrix.shard }}/2 | |
| - name: Upload browser failure evidence | |
| if: failure() | |
| uses: actions/upload-artifact@v6 | |
| with: | |
| name: web-acceptance-${{ matrix.shard }}-${{ github.run_attempt }} | |
| path: | | |
| playwright-report/ | |
| test-results/ | |
| retention-days: 7 | |
| compression-level: 0 | |
| if-no-files-found: ignore | |
| api: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'api') | |
| uses: ./.github/workflows/api-acceptance.yml | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| container: ${{ needs.plan.outputs.image == 'true' }} | |
| native: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'native') | |
| uses: ./.github/workflows/native.yml | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| upload-artifacts: ${{ inputs.native-artifacts || false }} | |
| lint: | |
| needs: plan | |
| if: needs.plan.result == 'success' && contains(fromJSON(needs.plan.outputs.jobs || '[]'), 'lint') | |
| uses: ./.github/workflows/actionlint.yml | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| # Always report the required check, even when planning or a dependency fails. | |
| check: | |
| if: always() | |
| needs: [plan, hygiene, distribution, backend, harness, example, web, web-acceptance, api, native, lint] | |
| runs-on: ${{ vars.OAC_USE_GITHUB_RUNNERS == 'true' && 'ubuntu-22.04' || 'blacksmith-2vcpu-ubuntu-2204' }} | |
| timeout-minutes: 5 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| with: | |
| ref: ${{ inputs.ref || github.sha }} | |
| - name: Require every selected check to succeed | |
| env: | |
| PLAN: ${{ needs.plan.outputs.plan }} | |
| RESULTS: ${{ toJSON(needs) }} | |
| run: python3 scripts/ci_plan.py gate |