name: CI
on:
push:
pull_request:
merge_group:
permissions: {}
env:
GH_TOKEN: ${{ github.token }}
RUSTFLAGS: -Dwarnings
RUSTDOCFLAGS: -Dwarnings
jobs:
clippy:
name: Clippy
runs-on: ubuntu-24.04
steps:
- &checkout
name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd with:
persist-credentials: false
- name: Install Rust toolchain
run: |
rustup show
rustup component add clippy rust-src
rustup target add x86_64-unknown-none
- &install-cargo_hack
name: Install cargo-hack
uses: taiki-e/install-action@94cb46f8d6e437890146ffbd78a778b78e623fb2 with:
tool: cargo-hack
fallback: none
- run: cargo hack clippy --feature-powerset --no-dev-deps
- run: cargo clippy --lib --examples --target examples/i686-unknown-none.json -Zjson-target-spec -Zbuild-std=core
- run: cargo clippy --lib --examples --target x86_64-unknown-none
doc:
name: Document
runs-on: ubuntu-24.04
steps:
- *checkout
- name: Install Rust toolchain
run: |
rustup show
rustup target add x86_64-unknown-none
- run: cargo install cargo-docs-rs
- run: cargo docs-rs
- run: cargo doc --examples
fmt:
name: Format
runs-on: ubuntu-24.04
steps:
- *checkout
- name: Install Rust toolchain
run: |
rustup show
rustup component add rustfmt
- run: cargo fmt -- --check
msrv:
name: MSRV
runs-on: ubuntu-24.04
steps:
- *checkout
- name: Install Rust toolchain
run: rustup override set 1.85
- *install-cargo_hack
- run: cargo hack check --feature-powerset --no-dev-deps
run:
name: Run
runs-on: ubuntu-24.04
steps:
- *checkout
- name: Install Rust toolchain
run: |
rustup show
rustup component add rust-src
rustup target add x86_64-unknown-none
- name: Install QEMU
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends qemu-system-x86
- name: Set up ~/.local/bin
run: |
mkdir -p ~/.local/bin
echo ~/.local/bin >> "$GITHUB_PATH"
- name: Install Firecracker
run: |
version=v1.15.0
gh release download --repo firecracker-microvm/firecracker "$version" --pattern "firecracker-$version-x86_64.tgz"
tar --extract --file "firecracker-$version-x86_64.tgz" "release-$version-x86_64/firecracker-$version-x86_64"
mv "release-$version-x86_64/firecracker-$version-x86_64" ~/.local/bin/firecracker
rmdir "release-$version-x86_64"
firecracker --version
- name: Install Cloud Hypervisor
run: |
version=v51.1
gh release download --repo cloud-hypervisor/cloud-hypervisor "$version" --pattern cloud-hypervisor-static
chmod +x cloud-hypervisor-static
mv cloud-hypervisor-static ~/.local/bin/cloud-hypervisor
cloud-hypervisor --version
- run: cargo build --examples --target x86_64-unknown-none
- run: ./examples/run.sh print x86 dev qemu
- run: ./examples/run.sh print x86 dev qemu-kvm
- run: ./examples/run.sh print x86 dev firecracker
- run: ./examples/run.sh print x86 dev cloud-hypervisor
- run: ./examples/run.sh print x86 release qemu
- run: ./examples/run.sh print x86 release qemu-kvm
- run: ./examples/run.sh print x86 release firecracker
- run: ./examples/run.sh print x86 release cloud-hypervisor
- run: ./examples/run.sh print x86_64 dev qemu
- run: ./examples/run.sh print x86_64 dev qemu-kvm
- run: ./examples/run.sh print x86_64 dev firecracker
- run: ./examples/run.sh print x86_64 dev cloud-hypervisor
- run: ./examples/run.sh print x86_64 release qemu
- run: ./examples/run.sh print x86_64 release qemu-kvm
- run: ./examples/run.sh print x86_64 release firecracker
- run: ./examples/run.sh print x86_64 release cloud-hypervisor
test:
name: Test
runs-on: ubuntu-24.04
steps:
- *checkout
- name: Install Rust toolchain
run: rustup show
- run: cargo test --lib --bins --tests --benches
- run: cargo test --doc
zizmor:
name: Zizmor
runs-on: ubuntu-24.04
permissions:
security-events: write steps:
- *checkout
- name: Run zizmor
uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8