docs: rebuild roadmap and next-phase handoff #162
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: CI | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| branches: [main] | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| defaults: | |
| run: | |
| shell: bash | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| quality: | |
| name: Quality / lint and harness tests | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: actions/setup-python@v6 | |
| with: | |
| python-version: '3.12' | |
| - run: python3 -m pip install -r requirements-ci.txt | |
| - run: bash scripts/ci/entrypoint.sh quality | |
| - name: Check Actions definitions | |
| if: always() | |
| run: | | |
| GOBIN="$PWD/target/ci-tools" go install github.com/rhysd/actionlint/cmd/actionlint@v1.7.7 | |
| target/ci-tools/actionlint -shellcheck= | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-quality | |
| path: target/ci/quality/ | |
| if-no-files-found: error | |
| style: | |
| name: Quality / rustfmt and Clippy | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| - run: make fmt-check | |
| - run: make clippy | |
| hosted: | |
| name: Hosted / ${{ matrix.profile }} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| profile: [debug, release] | |
| env: | |
| HOSTED_TEST_PROFILE: ${{ matrix.profile }} | |
| CARGO_TARGET_DIR: hosted-subcrate-target | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| with: | |
| cache-key: hosted-${{ matrix.profile }} | |
| - run: bash scripts/ci/entrypoint.sh hosted | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-hosted-${{ matrix.profile }} | |
| path: target/ci/hosted/ | |
| if-no-files-found: error | |
| tools: | |
| name: Hosted / fuzz tools and executor | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| with: | |
| cache-key: host-tools | |
| - run: bash scripts/ci/entrypoint.sh tools | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-tools | |
| path: target/ci/tools/ | |
| if-no-files-found: error | |
| build: | |
| name: Kernel / build and usercopy | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 30 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| - run: bash scripts/ci/entrypoint.sh build | |
| - uses: actions/upload-artifact@v7 | |
| with: | |
| name: normal-boot-image | |
| path: esp/ | |
| if-no-files-found: error | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-build | |
| path: target/ci/build/ | |
| if-no-files-found: error | |
| runtime: | |
| name: QEMU / boot and SMP | |
| needs: build | |
| runs-on: ubuntu-24.04 | |
| # Three sequential 15-minute observation windows plus setup/reporting. | |
| timeout-minutes: 60 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| with: | |
| qemu: 'true' | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| name: normal-boot-image | |
| path: esp | |
| - run: bash scripts/ci/entrypoint.sh runtime | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-runtime | |
| path: target/ci/runtime/ | |
| if-no-files-found: error | |
| qemu: | |
| name: QEMU / ${{ matrix.group }} | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 45 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| group: [musl, iommu, mitigation, qemu-fuzz] | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - uses: ./.github/actions/setup-kernel | |
| with: | |
| qemu: 'true' | |
| cache-key: qemu-${{ matrix.group }} | |
| - run: bash scripts/ci/entrypoint.sh "$CI_GROUP" | |
| env: | |
| CI_GROUP: ${{ matrix.group }} | |
| - uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ci-${{ matrix.group }} | |
| path: target/ci/${{ matrix.group }}/ | |
| if-no-files-found: error | |
| result: | |
| name: CI result | |
| needs: [quality, style, hosted, tools, build, runtime, qemu] | |
| if: always() | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 15 | |
| steps: | |
| - uses: actions/checkout@v7 | |
| - run: python3 scripts/ci/ci_report.py --aggregate | |
| env: | |
| CI_JOB_RESULTS: ${{ toJSON(needs) }} |