Merge same-mechanism limit layers into one launcher invocation #2
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: e2e resource-ceiling matrix | ||
| # Dispatcher: the matrix is generated from tests/e2e/scenarios.py's registry | ||
| # via `--emit-matrix` (grouped by setup profile), never hand-enumerated here. | ||
| # Adding a scenario to the registry is a one-row edit -- no workflow file | ||
| # needs to change (design: "the matrix is generated from the registry"). | ||
| # | ||
| # Deliberately excluded combinations (criterion 13 -- considered, not | ||
| # forgotten; full reasons live in tests/e2e/scenarios.py::EXCLUSIONS): | ||
| # - Linux containers (docker/podman) on a macOS runner: no nested | ||
| # virtualization on GH-hosted macOS runners (actions/runner-images #13505, | ||
| # closed not-planned, Jan 2026). | ||
| # - Linux containers or Hyper-V-isolated Windows containers on a Windows | ||
| # runner: neither WSL2 nor Hyper-V is enabled on GH-hosted Windows runners. | ||
| # - Any container of any kind on macOS: Apple's own `container` CLI hits the | ||
| # identical nested-virtualization restriction. | ||
| # - Any macOS scenario asserting a hard, enforced CPU-affinity ceiling: | ||
| # thread_policy_set is scheduler-advisory only, never a hard constraint. | ||
| on: | ||
| push: | ||
| pull_request: | ||
| workflow_dispatch: | ||
| jobs: | ||
| emit-matrix: | ||
| runs-on: ubuntu-latest | ||
| outputs: | ||
| linux: ${{ steps.matrix.outputs.linux }} | ||
| macos: ${{ steps.matrix.outputs.macos }} | ||
| windows: ${{ steps.matrix.outputs.windows }} | ||
| steps: | ||
| - uses: actions/checkout@v4 | ||
| - uses: actions/setup-python@v5 | ||
| with: | ||
| python-version: "3.11" | ||
| - run: pip install -e ".[test]" | ||
| - id: matrix | ||
| shell: bash | ||
| run: | | ||
| python -m tests.e2e.scenarios --emit-matrix > matrix.json | ||
| python - <<'PY' >> "$GITHUB_OUTPUT" | ||
| import json | ||
| data = json.load(open("matrix.json")) | ||
| for family in ("linux", "macos", "windows"): | ||
| print(f"{family}={json.dumps(data[family])}") | ||
| PY | ||
| linux: | ||
| needs: emit-matrix | ||
| if: needs.emit-matrix.outputs.linux != '[]' | ||
| uses: ./.github/workflows/e2e-linux.yml | ||
| with: | ||
| profiles: ${{ needs.emit-matrix.outputs.linux }} | ||
| macos: | ||
| needs: emit-matrix | ||
| if: needs.emit-matrix.outputs.macos != '[]' | ||
| uses: ./.github/workflows/e2e-macos.yml | ||
|
Check failure on line 59 in .github/workflows/e2e.yml
|
||
| with: | ||
| profiles: ${{ needs.emit-matrix.outputs.macos }} | ||
| windows: | ||
| needs: emit-matrix | ||
| if: needs.emit-matrix.outputs.windows != '[]' | ||
| uses: ./.github/workflows/e2e-windows.yml | ||
| with: | ||
| profiles: ${{ needs.emit-matrix.outputs.windows }} | ||