Skip to content

docs: rebuild roadmap and next-phase handoff #162

docs: rebuild roadmap and next-phase handoff

docs: rebuild roadmap and next-phase handoff #162

Workflow file for this run

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) }}