From 1d1cfa660370a21f425a46546c58157752ff0082 Mon Sep 17 00:00:00 2001 From: Swung0x48 Date: Mon, 5 Oct 2026 11:32:08 -0400 Subject: [PATCH] [CI] Temporarily run all workflows on GitHub-hosted runners --- .github/workflows/test.yml | 159 ++++++++----------------------------- 1 file changed, 31 insertions(+), 128 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c7e0318e..51f59e83 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,101 +31,7 @@ defaults: shell: bash jobs: - select-integration-runner: - name: Select GPU runner (integration) - needs: [build-linux] - runs-on: ubuntu-latest - permissions: - contents: read - outputs: - runner: ${{ steps.select.outputs.runner }} - pool: ${{ steps.select.outputs.pool }} - steps: - - uses: actions/checkout@v6 - - name: Test runner selection - run: python3 scripts/ci/test_select_test_runner.py - - name: Check preferred runner availability - id: select - env: - RUNNER_STATUS_TOKEN: ${{ secrets.RUNNER_STATUS_TOKEN }} - run: python3 scripts/ci/select_test_runner.py - - select-verify-runner: - name: Select GPU runner (verify) - needs: [build-linux-verify] - runs-on: ubuntu-latest - permissions: - contents: read - outputs: - runner: ${{ steps.select.outputs.runner }} - pool: ${{ steps.select.outputs.pool }} - steps: - - uses: actions/checkout@v6 - - name: Test runner selection - run: python3 scripts/ci/test_select_test_runner.py - - name: Check preferred runner availability - id: select - env: - RUNNER_STATUS_TOKEN: ${{ secrets.RUNNER_STATUS_TOKEN }} - run: python3 scripts/ci/select_test_runner.py - - select-verify-split-runner: - name: Select GPU runner (verify-split) - needs: [build-linux-verify-split] - runs-on: ubuntu-latest - permissions: - contents: read - outputs: - runner: ${{ steps.select.outputs.runner }} - pool: ${{ steps.select.outputs.pool }} - steps: - - uses: actions/checkout@v6 - - name: Test runner selection - run: python3 scripts/ci/test_select_test_runner.py - - name: Check preferred runner availability - id: select - env: - RUNNER_STATUS_TOKEN: ${{ secrets.RUNNER_STATUS_TOKEN }} - run: python3 scripts/ci/select_test_runner.py - - select-split-runner: - name: Select GPU runner (split) - needs: [build-linux-split] - runs-on: ubuntu-latest - permissions: - contents: read - outputs: - runner: ${{ steps.select.outputs.runner }} - pool: ${{ steps.select.outputs.pool }} - steps: - - uses: actions/checkout@v6 - - name: Test runner selection - run: python3 scripts/ci/test_select_test_runner.py - - name: Check preferred runner availability - id: select - env: - RUNNER_STATUS_TOKEN: ${{ secrets.RUNNER_STATUS_TOKEN }} - run: python3 scripts/ci/select_test_runner.py - - select-retrace-runner: - name: Select GPU runner (retrace) - needs: [build-retrace, trace-fixtures] - runs-on: ubuntu-latest - permissions: - contents: read - outputs: - runner: ${{ steps.select.outputs.runner }} - pool: ${{ steps.select.outputs.pool }} - steps: - - uses: actions/checkout@v6 - - name: Test runner selection - run: python3 scripts/ci/test_select_test_runner.py - - name: Check preferred runner availability - id: select - env: - RUNNER_STATUS_TOKEN: ${{ secrets.RUNNER_STATUS_TOKEN }} - run: python3 scripts/ci/select_test_runner.py - + # Temporarily keep all CI on GitHub-hosted runners while WSL D3D12 readback hangs are investigated. build-linux: runs-on: ubuntu-latest permissions: @@ -424,8 +330,8 @@ jobs: integration: name: integration (${{ matrix.transport }}) - runs-on: ${{ fromJSON(needs.select-integration-runner.outputs.runner) }} - needs: [select-integration-runner, build-linux] + runs-on: ubuntu-latest + needs: [build-linux] strategy: fail-fast: false matrix: @@ -533,7 +439,7 @@ jobs: run: python3 scripts/ci/junit_annotate.py "${RUNNER_TEMP}" - name: Upload integration lane evidence - if: ${{ always() && needs.select-integration-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: integration-evidence-${{ matrix.lane }}-${{ matrix.transport }} @@ -737,9 +643,9 @@ jobs: # are ALWAYS-ON steps, not a manual exercise: a gate that can only be shown to work by someone # remembering to break it on purpose is a gate that has already stopped working. integration-verify: - runs-on: ${{ fromJSON(needs.select-verify-runner.outputs.runner) }} + runs-on: ubuntu-latest timeout-minutes: 180 - needs: [select-verify-runner, build-linux-verify] + needs: [build-linux-verify] steps: - name: Checkout repo @@ -979,7 +885,7 @@ jobs: echo "the omitted fill point turned the lane red, as it must" - name: Upload verify lane logs - if: ${{ always() && needs.select-verify-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: integration-verify-logs @@ -1009,8 +915,8 @@ jobs: # gPipeInputs and the frontend GLContext) are co-resident only when both roles share a process. # MG_IntegrationTest/CMakeLists.txt's verify-split block records the spawn measurement. integration-verify-split: - runs-on: ${{ fromJSON(needs.select-verify-split-runner.outputs.runner) }} - needs: [select-verify-split-runner, build-linux-verify-split] + runs-on: ubuntu-latest + needs: [build-linux-verify-split] timeout-minutes: 180 steps: - name: Checkout repo @@ -1104,7 +1010,7 @@ jobs: # upload made that worse rather than better, because a failure investigation is exactly # when the overwritten half is the half somebody needs. - name: Keep lane logs before controls - if: ${{ always() && needs.select-verify-split-runner.result == 'success' }} + if: ${{ always() }} working-directory: build-verify-split/MobileGL/MG_IntegrationTest run: | rm -rf verify-split-logs-lane @@ -1221,7 +1127,7 @@ jobs: run: python3 scripts/ci/junit_annotate.py "${RUNNER_TEMP}" - name: Upload verify-split lane logs - if: ${{ always() && needs.select-verify-split-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: integration-verify-split-logs @@ -1469,9 +1375,9 @@ jobs: # The split lane itself: the three-arm shape ARCHITECTURE.md:521 asks for verbatim, plus the # first real run of the five MG_Test/Wire suites, plus P5's two exit-gate negative controls. integration-split: - runs-on: ${{ fromJSON(needs.select-split-runner.outputs.runner) }} + runs-on: ubuntu-latest timeout-minutes: 120 - needs: [select-split-runner, build-linux-split] + needs: [build-linux-split] steps: - name: Checkout repo @@ -1707,7 +1613,7 @@ jobs: run: python3 scripts/ci/junit_annotate.py "${RUNNER_TEMP}" - name: Upload split lane logs - if: ${{ always() && needs.select-split-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: integration-split-logs @@ -1732,9 +1638,9 @@ jobs: # Configured controls must pass without skips. Capability gaps and known # limitations are reported separately and accepted only by exact name/reason. integration-split-strict: - runs-on: ${{ fromJSON(needs.select-split-runner.outputs.runner) }} + runs-on: ubuntu-latest timeout-minutes: 60 - needs: [select-split-runner, build-linux-split] + needs: [build-linux-split] steps: - name: Checkout repo @@ -2241,7 +2147,7 @@ jobs: --out "${RUNNER_TEMP}/magma-cache-syncval" --execute - name: Upload Magma run-ahead and cache evidence - if: ${{ always() && needs.select-split-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: magma-runahead-checks @@ -2310,7 +2216,7 @@ jobs: run: python3 scripts/ci/junit_annotate.py "${RUNNER_TEMP}" - name: Upload strict lane logs - if: ${{ always() && needs.select-split-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: integration-split-strict-logs @@ -2407,8 +2313,8 @@ jobs: run: python3 scripts/check_include_closure.py --mode both --compiler "${MOBILEGL_CI_CXX}" --self-test --require-all --expect-probes 4 benchmark: - runs-on: ${{ fromJSON(needs.select-integration-runner.outputs.runner) }} - needs: [select-integration-runner, build-linux] + runs-on: ubuntu-latest + needs: [build-linux] steps: - name: Checkout repo @@ -2744,19 +2650,18 @@ jobs: retrace: name: retrace (${{ matrix.backend }} / ${{ matrix.transport || 'monolith' }}, ${{ matrix.case }}) - runs-on: ${{ fromJSON(needs.select-retrace-runner.outputs.runner) }} + runs-on: ubuntu-latest env: MOBILEGL_TRANSPORT: ${{ matrix.transport || 'monolith' }} MOBILEGL_IPC_ROLE_SPLIT_STATE: "1" MOBILEGL_IPC_STRICT_ERRORS: "1" MOBILEGL_IPC_RUN_AHEAD: "1" needs: - - select-retrace-runner - build-linux - build-retrace - trace-cases - trace-fixtures - if: ${{ always() && needs.select-retrace-runner.result == 'success' && needs.build-linux.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} + if: ${{ always() && needs.build-linux.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} strategy: fail-fast: false max-parallel: 4 @@ -2864,7 +2769,7 @@ jobs: if-no-files-found: ignore - name: Upload actual image - if: ${{ always() && needs.select-retrace-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: retrace-result-${{ matrix.lane || 'monolith-control' }}-${{ matrix.transport || 'monolith' }}-${{ matrix.backend }}-${{ matrix.case }} @@ -2953,15 +2858,14 @@ jobs: # is budgeted at 5-10x, and the full sweep is a phase-exit / workflow_dispatch run. retrace-verify: name: retrace verify (${{ matrix.backend }}, ${{ matrix.case }}) - runs-on: ${{ fromJSON(needs.select-retrace-runner.outputs.runner) }} + runs-on: ubuntu-latest timeout-minutes: 240 needs: - - select-retrace-runner - build-linux-verify - build-retrace - trace-cases - trace-fixtures - if: ${{ always() && needs.select-retrace-runner.result == 'success' && needs.build-linux-verify.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} + if: ${{ always() && needs.build-linux-verify.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} strategy: fail-fast: false max-parallel: 4 @@ -3112,7 +3016,7 @@ jobs: if-no-files-found: ignore - name: Upload actual image - if: ${{ always() && needs.select-retrace-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: retrace-verify-result-${{ matrix.backend }}-${{ matrix.case }} @@ -3146,11 +3050,10 @@ jobs: # transport-resolution line in the library's own log (this PROCESS resolved inproc). retrace-split: name: retrace split (${{ matrix.backend }} / ${{ matrix.transport }}, ${{ matrix.case }}) - runs-on: ${{ fromJSON(needs.select-retrace-runner.outputs.runner) }} + runs-on: ubuntu-latest timeout-minutes: 240 - # The setup action selects Dozen on Arch WSL or lavapipe on GitHub. + # The setup action selects lavapipe on GitHub-hosted runners. needs: - - select-retrace-runner - build-linux-monolith-control - build-linux-split - build-retrace @@ -3158,7 +3061,7 @@ jobs: - trace-fixtures # The separate OFF/pull artifact is for the negative control ONLY: its library is what the control # swaps in to prove the transport-resolution assertion is load-bearing. - if: ${{ always() && needs.select-retrace-runner.result == 'success' && needs.build-linux-monolith-control.result == 'success' && needs.build-linux-split.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} + if: ${{ always() && needs.build-linux-monolith-control.result == 'success' && needs.build-linux-split.result == 'success' && needs.build-retrace.result == 'success' && needs.trace-cases.result == 'success' }} strategy: fail-fast: false max-parallel: 4 @@ -3408,7 +3311,7 @@ jobs: # slot names are what MEASUREMENTS wants from every split run, and reading them out of the # library's own log is the only way to get them (ctest -V's transcript is a false zero). - name: Refusal census from the library log - if: ${{ always() && needs.select-retrace-runner.result == 'success' }} + if: ${{ always() }} working-directory: build-retrace/tools/trace_replay run: | # BOTH ROLES, because under spawn every applier refusal is raised in the SERVER's @@ -3438,7 +3341,7 @@ jobs: if-no-files-found: ignore - name: Upload actual image - if: ${{ always() && needs.select-retrace-runner.result == 'success' }} + if: ${{ always() }} uses: actions/upload-artifact@v7 with: name: retrace-split-result-${{ matrix.transport }}-${{ matrix.backend }}-${{ matrix.case }}