feat(xtask): add ci subcommand #1513
Workflow file for this run
This file contains 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: | |
pull_request: | |
merge_group: | |
env: | |
RUSTFLAGS: -Dwarnings | |
RUSTDOCFLAGS: -Dwarnings | |
defaults: | |
run: | |
shell: bash | |
jobs: | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
steps: | |
- uses: taiki-e/install-action@cargo-hack | |
- name: Install NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install nasm | |
- uses: actions/checkout@v4 | |
- uses: mkroening/rust-toolchain-toml@main | |
- uses: Swatinem/rust-cache@v2 | |
- name: Check each feature | |
run: cargo hack check --package hermit-kernel --each-feature --no-dev-deps --target x86_64-unknown-none | |
env: | |
RUSTFLAGS: | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Install NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install nasm | |
- uses: mkroening/rust-toolchain-toml@main | |
- run: rustup component add clippy | |
- uses: Swatinem/rust-cache@v2 | |
- run: cargo xtask clippy | |
format: | |
name: Format | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: mkroening/rust-toolchain-toml@main | |
- run: rustup component add rustfmt | |
- run: cargo fmt -- --check | |
check-docs: | |
name: Check docs | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install nasm | |
- uses: actions/checkout@v4 | |
- uses: mkroening/rust-toolchain-toml@main | |
- run: rustup target add aarch64-unknown-none-softfloat | |
- uses: Swatinem/rust-cache@v2 | |
- name: Check docs | |
run: | | |
cargo doc --package hermit-kernel --no-deps --document-private-items --target x86_64-unknown-none | |
cargo doc --package hermit-kernel --no-deps --document-private-items --target aarch64-unknown-none-softfloat --no-default-features | |
build: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install nasm | |
- uses: actions/checkout@v4 | |
- uses: mkroening/rust-toolchain-toml@main | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build minimal kernel | |
run: | | |
cargo xtask build --arch x86_64 --no-default-features | |
cargo xtask build --arch aarch64 --no-default-features | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install QEMU, NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install qemu-system-x86 nasm | |
- uses: actions/checkout@v4 | |
- uses: mkroening/rust-toolchain-toml@main | |
- uses: Swatinem/rust-cache@v2 | |
- name: Unit tests | |
run: cargo test --lib | |
env: | |
RUSTFLAGS: -Awarnings | |
- name: Download loader | |
uses: dsaltares/[email protected] | |
with: | |
repo: hermitcore/rusty-loader | |
file: rusty-loader-x86_64 | |
- name: Integration tests | |
run: cargo test --tests --no-fail-fast --target x86_64-unknown-none -- --bootloader_path=rusty-loader-x86_64 | |
env: | |
RUSTFLAGS: | |
run-x86_64: | |
name: Run Hermit for Rust (x86_64) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install QEMU, NASM | |
run: | | |
sudo apt-get update | |
sudo apt-get install qemu-system-x86 nasm libcap-ng-dev libseccomp-dev | |
- name: Checkout hermit-rs | |
uses: actions/checkout@v4 | |
with: | |
repository: hermitcore/hermit-rs | |
submodules: true | |
- name: Remove hermit-kernel submodule | |
run: git rm -r kernel | |
- name: Checkout hermit-kernel | |
uses: actions/checkout@v4 | |
with: | |
path: kernel | |
- uses: mkroening/rust-toolchain-toml@main | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build dev profile | |
run: cargo build -Zbuild-std=std,panic_abort --package rusty_demo --target x86_64-unknown-hermit --features pci-ids | |
- name: Download loader | |
uses: dsaltares/[email protected] | |
with: | |
repo: hermitcore/rusty-loader | |
file: rusty-loader-x86_64 | |
- name: Install virtiofsd | |
run: cargo install virtiofsd | |
- name: Test dev profile | |
run: cargo xtask qemu --arch x86_64 --package rusty_demo --virtiofsd | |
working-directory: ./kernel | |
- name: Build release profile | |
run: cargo build -Zbuild-std=std,panic_abort --package rusty_demo --target x86_64-unknown-hermit --release --features pci-ids | |
- name: Test release profile | |
run: cargo xtask qemu --arch x86_64 --package rusty_demo --virtiofsd --release | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (debug, rtl8139) | |
run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package httpd --features ci,dhcpv4,rtl8139 | |
- name: Test httpd with DHCP support (debug, rtl8139) | |
run: cargo xtask qemu --arch x86_64 --package httpd --netdev rtl8139 | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (debug, virtio-net) | |
run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package httpd --features ci,dhcpv4 | |
- name: Test httpd with DHCP support (debug, virtio-net) | |
run: cargo xtask qemu --arch x86_64 --package httpd --netdev virtio-net-pci | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (release, rtl8139) | |
run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package httpd --release --features ci,dhcpv4,rtl8139 | |
- name: Test httpd with DHCP support (release, rtl8139) | |
run: cargo xtask qemu --arch x86_64 --package httpd --netdev rtl8139 --release | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (release, virtio-net) | |
run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package httpd --release --features ci,dhcpv4 | |
- name: Test httpd with DHCP support (release, virtio-net) | |
run: cargo xtask qemu --arch x86_64 --package httpd --netdev virtio-net-pci --release | |
working-directory: ./kernel | |
- name: Build minimal profile | |
run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --no-default-features --release --package hello_world | |
- name: Test minimal profile | |
id: minimal | |
run: cargo xtask qemu --arch x86_64 --package hello_world --microvm --release | |
working-directory: ./kernel | |
run-aarch64: | |
name: Run Hermit for Rust (aarch64) | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout hermit-rs | |
uses: actions/checkout@v4 | |
with: | |
repository: hermitcore/hermit-rs | |
submodules: true | |
- name: Remove hermit-kernel submodule | |
run: git rm -r kernel | |
- name: Checkout hermit-kernel | |
uses: actions/checkout@v4 | |
with: | |
path: kernel | |
- name: Download loader | |
uses: dsaltares/[email protected] | |
with: | |
repo: hermitcore/rusty-loader | |
file: rusty-loader-aarch64 | |
- uses: mkroening/rust-toolchain-toml@main | |
- name: Install QEMU | |
run: | | |
sudo apt-get update | |
sudo apt-get install qemu-system-aarch64 | |
- uses: Swatinem/rust-cache@v2 | |
- name: Build dev profile | |
run: cargo build -Zbuild-std=std,panic_abort --target aarch64-unknown-hermit --package rusty_demo --features pci-ids | |
- name: Test dev kernel | |
run: cargo xtask qemu --arch aarch64 --package rusty_demo | |
working-directory: ./kernel | |
- name: Build release profile | |
run: cargo build -Zbuild-std=std,panic_abort --target aarch64-unknown-hermit --package rusty_demo --release --features pci-ids | |
- name: Test release kernel | |
run: cargo xtask qemu --arch aarch64 --package rusty_demo --release | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (debug) | |
run: cargo build -Zbuild-std=std,panic_abort --target aarch64-unknown-hermit --package httpd --features ci,dhcpv4 | |
- name: Test httpd with DHCP support (debug, virtio-net) | |
# FIXME: Make test less flaky and remove continue-on-error | |
continue-on-error: true | |
run: cargo xtask qemu --arch aarch64 --package httpd --netdev virtio-net-pci | |
working-directory: ./kernel | |
- name: Build httpd with DHCP support (release) | |
run: cargo build -Zbuild-std=std,panic_abort --target aarch64-unknown-hermit --package httpd --release --features ci,dhcpv4 | |
- name: Test httpd with DHCP support (release, virtio-net) | |
# FIXME: Make test less flaky and remove continue-on-error | |
continue-on-error: true | |
run: cargo xtask qemu --arch aarch64 --package httpd --netdev virtio-net-pci --release | |
working-directory: ./kernel |