Skip to content

Commit

Permalink
f
Browse files Browse the repository at this point in the history
Signed-off-by: Martin Kröning <martin.kroening@eonerc.rwth-aachen.de>
  • Loading branch information
mkroening committed Aug 22, 2024
1 parent cdaee34 commit ca0d4b7
Showing 1 changed file with 112 additions and 63 deletions.
175 changes: 112 additions & 63 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,8 @@ jobs:
env:
RUSTFLAGS:

run-hermit:
name: Run
qemu:
name: QEMU
runs-on: ubuntu-latest
env:
HERMIT_CAREFUL: ${{ matrix.hermit-careful }}
Expand Down Expand Up @@ -232,70 +232,119 @@ jobs:
- run: cargo xtask ci qemu --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} ${{ matrix.flags }} --package mioudp --features hermit/udp,hermit/dhcpv4 --netdev rtl8139 --features hermit/rtl8139
if: matrix.arch == 'x86_64'

run-x86_64-kvm:
name: Run (x86_64, kvm)
uhyve:
name: Uhyve
runs-on: ubuntu-latest
env:
HERMIT_CAREFUL: ${{ matrix.hermit-careful }}
defaults:
run:
working-directory: kernel
strategy:
matrix:
arch: [x86_64]
profile: [dev, release]
include:
- profile: dev
hermit-careful: 1

steps:
- name: Checkout hermit-rs
uses: actions/checkout@v4
with:
repository: hermit-os/hermit-rs
submodules: true
- name: Remove hermit-kernel submodule
run: git rm -r kernel
working-directory: .
- name: Checkout hermit-kernel
uses: actions/checkout@v4
with:
path: kernel
- name: Install QEMU
run: |
sudo apt-get update
sudo apt-get install qemu-system-x86
- name: Check KVM availability
shell: bash
run: |
lscpu
kvm-ok
- name: Download loader (x86_64, x86_64-fc)
run: gh release download --repo hermit-os/loader --pattern hermit-loader-x86_64 --pattern hermit-loader-x86_64-fc
- 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
- name: Checkout hermit-rs
uses: actions/checkout@v4
with:
repository: hermit-os/hermit-rs
submodules: true
- name: Remove hermit-kernel submodule
run: git rm -r kernel
working-directory: .
- name: Checkout hermit-kernel
uses: actions/checkout@v4
with:
path: kernel
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
- uses: mkroening/rust-toolchain-toml@main
- run: rustup component add llvm-tools
working-directory: .
- uses: mkroening/rust-toolchain-toml@main
with:
toolchain-file: 'kernel/rust-toolchain.toml'
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.arch }}-${{ matrix.profile }}
save-if: ${{ github.ref == 'refs/heads/main' }}
workspaces: |
.
kernel
kernel/hermit-builtins
- run: cargo +stable install --locked uhyve
- run: cargo +stable install cargo-careful
if: matrix.profile == 'dev'
- run: UHYVE=$CARGO_HOME/bin/uhyve cargo xtask ci uhyve --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --sudo --package rusty_demo

firecracker:
name: Firecracker
runs-on: ubuntu-latest
env:
HERMIT_CAREFUL: ${{ matrix.hermit-careful }}
defaults:
run:
working-directory: kernel
strategy:
matrix:
arch: [x86_64]
profile: [dev, release]
include:
- profile: dev
hermit-careful: 1

$HOME/.local/bin/firecracker --version
- uses: dtolnay/rust-toolchain@stable
- run: cargo +stable install --locked uhyve
- uses: mkroening/rust-toolchain-toml@main
- uses: mkroening/rust-toolchain-toml@main
with:
toolchain-file: 'kernel/rust-toolchain.toml'
- uses: Swatinem/rust-cache@v2
with:
save-if: ${{ github.ref == 'refs/heads/main' }}
workspaces: |
.
kernel
kernel/hermit-builtins
- name: rusty_demo on Uhyve
run: UHYVE=$CARGO_HOME/bin/uhyve cargo xtask ci uhyve --arch x86_64 --package rusty_demo --sudo
- name: rusty_demo on Uhyve (release)
run: UHYVE=$CARGO_HOME/bin/uhyve cargo xtask ci uhyve --arch x86_64 --package rusty_demo --sudo --release
- name: rusty_demo on QEMU (with KVM)
run: cargo xtask ci qemu --arch x86_64 --package rusty_demo --accel --sudo
- name: rusty_demo on QEMU (with KVM, release)
run: cargo xtask ci qemu --arch x86_64 --package rusty_demo --accel --sudo --release
- name: hello_world on Firecracker
run: FIRECRACKER=$HOME/.local/bin/firecracker cargo xtask ci firecracker --arch x86_64 --package hello_world --sudo --no-default-features
steps:
- name: Checkout hermit-rs
uses: actions/checkout@v4
with:
repository: hermit-os/hermit-rs
submodules: true
- name: Remove hermit-kernel submodule
run: git rm -r kernel
working-directory: .
- name: Checkout hermit-kernel
uses: actions/checkout@v4
with:
path: kernel
- uses: dtolnay/rust-toolchain@stable
- uses: dtolnay/rust-toolchain@nightly
with:
components: rust-src
- uses: mkroening/rust-toolchain-toml@main
- run: rustup component add llvm-tools
working-directory: .
- uses: mkroening/rust-toolchain-toml@main
with:
toolchain-file: 'kernel/rust-toolchain.toml'
- uses: Swatinem/rust-cache@v2
with:
key: ${{ matrix.arch }}-${{ matrix.profile }}
save-if: ${{ github.ref == 'refs/heads/main' }}
workspaces: |
.
kernel
kernel/hermit-builtins
- run: cargo +stable install cargo-careful
if: matrix.profile == 'dev'
- 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
- run: FIRECRACKER=$HOME/.local/bin/firecracker cargo xtask ci firecracker --arch ${{ matrix.arch }} --profile ${{ matrix.profile }} --sudo --package hello_world --no-default-features

0 comments on commit ca0d4b7

Please sign in to comment.