Skip to content

Add support for Hermit Image decompression #1613

Add support for Hermit Image decompression

Add support for Hermit Image decompression #1613

Workflow file for this run

name: CI
on:
pull_request:
merge_group:
env:
GH_TOKEN: ${{ github.token }}
RUSTFLAGS: -Dwarnings
RUSTDOCFLAGS: -Dwarnings
defaults:
run:
shell: bash
jobs:
clippy:
name: Clippy
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- name: Clippy
run: cargo xtask clippy
fmt:
name: Format
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@nightly
with:
components: rustfmt
- name: Check Formatting
run: cargo fmt -- --check
run:
name: Run
strategy:
matrix:
arch: [x86_64, aarch64, aarch64_be, riscv64]
include:
- arch: x86_64
packages: qemu-system-x86
flags: --accel --sudo
- arch: aarch64
packages: qemu-system-arm ipxe-qemu u-boot-qemu u-boot-tools
- arch: aarch64_be
packages: qemu-system-arm ipxe-qemu u-boot-qemu u-boot-tools
- arch: riscv64
packages: qemu-system-misc opensbi
runs-on: ${{ (matrix.arch == 'aarch64' || matrix.arch == 'aarch64_be') && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
steps:
- name: Install Packages
run: |
sudo apt-get update
sudo apt-get install --no-install-recommends ${{ matrix.packages }}
- name: Install firecracker
run: |
# https://github.com/firecracker-microvm/firecracker/blob/v1.5.1/docs/getting-started.md#getting-a-firecracker-binary
ARCH="$(uname -m)"
release_url="https://github.com/firecracker-microvm/firecracker/releases"
latest=$(basename $(curl -fsSLI -o /dev/null -w %{url_effective} ${release_url}/latest))
curl -L ${release_url}/download/${latest}/firecracker-${latest}-${ARCH}.tgz \
| tar -xz
mkdir -p $HOME/.local/bin
mv release-${latest}-$(uname -m)/firecracker-${latest}-${ARCH} $HOME/.local/bin/firecracker
echo $HOME/.local/bin >> $GITHUB_PATH
$HOME/.local/bin/firecracker --version
echo "FIRECRACKER=$HOME/.local/bin/firecracker" >> "$GITHUB_ENV"
if: matrix.arch == 'x86_64'
- uses: actions/checkout@v6
with:
lfs: true
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.arch == 'aarch64_be' && 'nightly' || 'stable' }}
components: ${{ matrix.arch == 'aarch64_be' && 'rust-src' || '' }}
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-elf
if: matrix.arch == 'aarch64' || matrix.arch == 'aarch64_be'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-elf --release
if: matrix.arch == 'aarch64' || matrix.arch == 'aarch64_be'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-elf --u-boot
if: matrix.arch == 'aarch64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-elf --u-boot --release
if: matrix.arch == 'aarch64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-sbi
if: matrix.arch == 'riscv64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-sbi --release
if: matrix.arch == 'riscv64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot --release
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot --microvm
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot --microvm --release
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot --image hello_c
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-multiboot --image hello_c --release
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-uefi
if: matrix.arch == 'x86_64'
- run: cargo xtask ci qemu ${{ matrix.flags }} --target ${{ matrix.arch }}-uefi --release
if: matrix.arch == 'x86_64'
- run: cargo xtask ci firecracker --target ${{ matrix.arch }}-linux --sudo
if: matrix.arch == 'x86_64'
- run: cargo xtask ci firecracker --target ${{ matrix.arch }}-linux --sudo --release
if: matrix.arch == 'x86_64'