From 727b75e00332f0c5ef7530c70ff2d39cf4bc2ae0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Wed, 6 Sep 2023 17:27:11 +0200 Subject: [PATCH 1/6] ci: use dsaltares/fetch-gh-release-asset@master MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b10ef7b5a..6dce5054a4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -105,7 +105,7 @@ jobs: env: RUSTFLAGS: -Awarnings - name: Download loader - uses: dsaltares/fetch-gh-release-asset@1.1.1 + uses: dsaltares/fetch-gh-release-asset@master with: repo: hermitcore/rusty-loader file: rusty-loader-x86_64 @@ -143,7 +143,7 @@ jobs: - 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/fetch-gh-release-asset@1.1.1 + uses: dsaltares/fetch-gh-release-asset@master with: repo: hermitcore/rusty-loader file: rusty-loader-x86_64 @@ -292,7 +292,7 @@ jobs: with: path: kernel - name: Download loader - uses: dsaltares/fetch-gh-release-asset@1.1.1 + uses: dsaltares/fetch-gh-release-asset@master with: repo: hermitcore/rusty-loader file: rusty-loader-aarch64 @@ -376,7 +376,7 @@ jobs: - name: Build dev profile run: cargo build -Zbuild-std=std,panic_abort --package rusty_demo --target x86_64-unknown-hermit - name: Download loader (x86_64) - uses: dsaltares/fetch-gh-release-asset@1.1.1 + uses: dsaltares/fetch-gh-release-asset@master with: repo: hermitcore/rusty-loader file: rusty-loader-x86_64 @@ -410,7 +410,7 @@ jobs: -kernel rusty-loader-x86_64 \ -initrd target/x86_64-unknown-hermit/release/rusty_demo - name: Download loader (x86_64-fc) - uses: dsaltares/fetch-gh-release-asset@1.1.1 + uses: dsaltares/fetch-gh-release-asset@master with: repo: hermitcore/rusty-loader file: rusty-loader-x86_64-fc From 85c732f441d0f12bc4c5ffd41dca912cb75c56fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Wed, 6 Sep 2023 16:32:43 +0200 Subject: [PATCH 2/6] ci: checkout first MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6dce5054a4..b18f8a9410 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -356,10 +356,6 @@ jobs: name: Run Hermit for Rust (x86_64 + kvm) runs-on: [self-hosted] steps: - - name: Install QEMU, NASM - run: | - sudo apt-get update - sudo apt-get install qemu-system-x86 nasm - name: Checkout hermit-rs uses: actions/checkout@v4 with: @@ -371,6 +367,10 @@ jobs: uses: actions/checkout@v4 with: path: kernel + - name: Install QEMU, NASM + run: | + sudo apt-get update + sudo apt-get install qemu-system-x86 nasm - uses: mkroening/rust-toolchain-toml@main - uses: Swatinem/rust-cache@v2 - name: Build dev profile From 84cffc2057d10b0932e64aca18a6d1ebdb1c8724 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Tue, 5 Sep 2023 14:56:06 +0200 Subject: [PATCH 3/6] ci: put cargo build on one line MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 24 ++++++++---------------- 1 file changed, 8 insertions(+), 16 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b18f8a9410..2d8f55a7b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -176,8 +176,7 @@ jobs: -object memory-backend-file,id=mem,size=1G,mem-path=/dev/shm,share=on -numa node,memdev=mem \ -initrd target/x86_64-unknown-hermit/release/rusty_demo - 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 + 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: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -190,8 +189,7 @@ jobs: curl http://127.0.0.1:9975/help sleep 1 - 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 + 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: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -204,8 +202,7 @@ jobs: curl http://127.0.0.1:9975/help sleep 1 - 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 + 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: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -218,8 +215,7 @@ jobs: curl http://127.0.0.1:9975/help sleep 1 - 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 + 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: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -250,8 +246,7 @@ jobs: || qemu_status=$? test $qemu_status -eq 3 - name: Build udp tests (debug, virtio-net) - run: - cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package testudp --features udp,dhcpv4 + run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --package testudp --features udp,dhcpv4 - name: Test udp profile run: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -263,8 +258,7 @@ jobs: sleep 5 echo "exit" | socat -d -d -d - UDP:localhost:9975 - name: Build udp tests (release, virtio-net) - run: - cargo build -Zbuild-std=std,panic_abort --release --target x86_64-unknown-hermit --package testudp --features udp,dhcpv4 + run: cargo build -Zbuild-std=std,panic_abort --release --target x86_64-unknown-hermit --package testudp --features udp,dhcpv4 - name: Test udp profile run: | qemu-system-x86_64 -smp 1 -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ @@ -324,8 +318,7 @@ jobs: -m 512M -cpu cortex-a72 -smp 1 -display none -serial stdio \ -device guest-loader,addr=0x48000000,initrd=target/aarch64-unknown-hermit/release/rusty_demo - name: Build httpd with DHCP support (debug) - run: - cargo build -Zbuild-std=std,panic_abort --target aarch64-unknown-hermit --package httpd --features ci,dhcpv4 + 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) run: | qemu-system-aarch64 -semihosting \ @@ -338,8 +331,7 @@ jobs: curl http://127.0.0.1:9975/help sleep 1 - 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 + 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) run: | qemu-system-aarch64 -semihosting \ From 075a35a1d92ee0e2eb7023975112a740b589d166 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Tue, 5 Sep 2023 15:46:12 +0200 Subject: [PATCH 4/6] ci: remove step id MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2d8f55a7b7..03bd7f2611 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -230,7 +230,6 @@ jobs: - 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: | FREQ=`grep 'cpu MHz' /proc/cpuinfo | head -1 | awk -F: '{print $2}' | awk '{printf("%d\n",$1 + 0.5)}'` echo "FREQ = $FREQ" From 87abecf1057d2044437ae7273b3672a7fb719b87 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Tue, 5 Sep 2023 15:09:01 +0200 Subject: [PATCH 5/6] ci: move building step closer to run step MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 03bd7f2611..b603314060 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -139,9 +139,6 @@ jobs: workspaces: | . kernel - kernel/hermit-builtins - - 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/fetch-gh-release-asset@master with: @@ -149,6 +146,8 @@ jobs: file: rusty-loader-x86_64 - name: Install virtiofsd run: cargo install virtiofsd + - name: Build dev profile + run: cargo build -Zbuild-std=std,panic_abort --package rusty_demo --target x86_64-unknown-hermit --features pci-ids - name: Test dev profile run: | mkdir -p foo @@ -364,8 +363,6 @@ jobs: sudo apt-get install qemu-system-x86 nasm - 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 - name: Download loader (x86_64) uses: dsaltares/fetch-gh-release-asset@master with: @@ -378,6 +375,8 @@ jobs: run: | lscpu kvm-ok + - name: Build dev profile + run: cargo build -Zbuild-std=std,panic_abort --package rusty_demo --target x86_64-unknown-hermit - name: Test debug version (Uhyve) run: uhyve --verbose -c 1 target/x86_64-unknown-hermit/debug/rusty_demo env: From 3593b40879880f4d233d9e67b766a23ebaf9319b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Kr=C3=B6ning?= Date: Wed, 6 Sep 2023 17:54:27 +0200 Subject: [PATCH 6/6] ci: reorder kvm setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Martin Kröning --- .github/workflows/ci.yml | 52 ++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b603314060..4af80c298d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -361,20 +361,37 @@ jobs: run: | sudo apt-get update sudo apt-get install qemu-system-x86 nasm - - uses: mkroening/rust-toolchain-toml@main - - uses: Swatinem/rust-cache@v2 + - name: Check KVM availability + shell: bash + run: | + lscpu + kvm-ok - name: Download loader (x86_64) uses: dsaltares/fetch-gh-release-asset@master with: - repo: hermitcore/rusty-loader file: rusty-loader-x86_64 - - name: Install uhyve - run: cargo +stable install --locked uhyve - - name: Check KVM availability - shell: bash + repo: hermitcore/rusty-loader + - name: Download loader (x86_64-fc) + uses: dsaltares/fetch-gh-release-asset@master + with: + file: rusty-loader-x86_64-fc + repo: hermitcore/rusty-loader + - name: Install firecracker run: | - lscpu - kvm-ok + # https://github.com/firecracker-microvm/firecracker/blob/7c5fc8707f26c4244d48a747631ab0fb31fc4c39/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 + + # Rename the binary to "firecracker" + mv release-${latest}-$(uname -m)/firecracker-${latest}-${ARCH} firecracker + echo "$PWD" >> $GITHUB_PATH + - uses: dtolnay/rust-toolchain@stable + - run: cargo install uhyve + - 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 - name: Test debug version (Uhyve) @@ -399,23 +416,6 @@ jobs: -enable-kvm -cpu qemu64,apic,fsgsbase,rdtscp,xsave,xsaveopt,fxsr,rdrand \ -kernel rusty-loader-x86_64 \ -initrd target/x86_64-unknown-hermit/release/rusty_demo - - name: Download loader (x86_64-fc) - uses: dsaltares/fetch-gh-release-asset@master - with: - repo: hermitcore/rusty-loader - file: rusty-loader-x86_64-fc - - name: Install firecracker - run: | - # https://github.com/firecracker-microvm/firecracker/blob/7c5fc8707f26c4244d48a747631ab0fb31fc4c39/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 - - # Rename the binary to "firecracker" - mv release-${latest}-$(uname -m)/firecracker-${latest}-${ARCH} firecracker - echo "$PWD" >> $GITHUB_PATH - name: Build minimal profile (debug) run: cargo build -Zbuild-std=std,panic_abort --target x86_64-unknown-hermit --no-default-features --package hello_world - name: Test debug profile (Firecracker)