a2a-federation-e2e #99
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: a2a-federation-e2e | |
| # Cross-process A2A federation harness: spins up two FastAPI servers in | |
| # the same process (different ports) and exercises real HTTP delegation | |
| # with retry, peer-state machine, concurrency, and idempotent inbound | |
| # acceptance. Deliberately slower than the unit suite so it runs only on | |
| # PRs that touch the federation surface, plus a nightly schedule. | |
| # | |
| # Skipped on Windows in the test module itself because the asyncio + | |
| # uvicorn fixture combo wedges under ProactorEventLoop. | |
| on: | |
| pull_request: | |
| paths: | |
| - "src/bernstein/core/protocols/a2a/**" | |
| - "src/bernstein/core/routes/task_a2a.py" | |
| - "src/bernstein/core/server/server_app.py" | |
| - "tests/integration/test_a2a_federation_e2e.py" | |
| - ".github/workflows/a2a-federation-e2e.yml" | |
| schedule: | |
| # 03:33 UTC nightly; offset from cluster-e2e (03:17) and CI-fix. | |
| - cron: "33 3 * * *" | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: a2a-federation-e2e-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| a2a-federation-e2e: | |
| name: a2a-federation-e2e (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| timeout-minutes: 15 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # Module-level pytest.skipif handles Windows; covering ubuntu and | |
| # macOS here gives confidence on both POSIX targets. | |
| os: [ubuntu-latest, macos-latest] | |
| steps: | |
| - name: Harden runner (audit mode) | |
| uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4 | |
| with: | |
| egress-policy: audit | |
| - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 | |
| with: | |
| persist-credentials: false | |
| - name: Install uv | |
| uses: ./.github/actions/bootstrap | |
| - name: Set up Python 3.12 | |
| run: uv python install 3.12 | |
| - name: Sync dependencies | |
| run: uv sync --frozen --all-extras | |
| - name: Run A2A federation e2e suite | |
| run: | | |
| uv run pytest tests/integration/test_a2a_federation_e2e.py \ | |
| -x -q --tb=short |