mirror of
https://github.com/MobileGL-Dev/MobileGL
synced 2026-11-07 01:53:24 +09:00
[CI] Temporarily run all workflows on GitHub-hosted runners
This commit is contained in:
+31
-128
@@ -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 }}
|
||||
|
||||
Reference in New Issue
Block a user