Skip to content

fix(cri): auto-create missing HostPath dirs + zombie-proof sandbox liveness (#445 #461) #877

fix(cri): auto-create missing HostPath dirs + zombie-proof sandbox liveness (#445 #461)

fix(cri): auto-create missing HostPath dirs + zombie-proof sandbox liveness (#445 #461) #877

Workflow file for this run

name: CI
on:
push:
branches: [main]
pull_request:
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
components: rustfmt, clippy
- run: cargo fmt --check
- run: cargo clippy -- -D warnings
- run: cargo clippy --features embedded-wasm -- -D warnings
unit-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
- uses: Swatinem/rust-cache@v2
- run: cargo test --lib
- run: cargo test --lib --features embedded-wasm
integration-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
- uses: Swatinem/rust-cache@v2
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y nftables iproute2 passt
- name: Install protoc (>=23 for debug_redact support)
run: |
PROTOC_VERSION=25.3
ARCH=$(dpkg --print-architecture)
case "$ARCH" in amd64) PA=x86_64 ;; arm64) PA=aarch_64 ;; esac
curl -sL "https://github.com/protocolbuffers/protobuf/releases/download/v${PROTOC_VERSION}/protoc-${PROTOC_VERSION}-linux-${PA}.zip" -o /tmp/protoc.zip
sudo unzip -q /tmp/protoc.zip bin/protoc -d /usr/local
sudo chmod +x /usr/local/bin/protoc
- name: Build
run: cargo build -p pelagos -p pelagos-dockerd -p pelagos-cri
- name: Build rootfs
run: sudo ./scripts/build-rootfs-tarball.sh
- name: Set up pelagos system directories
run: sudo ./scripts/setup.sh --no-user
- name: Configure registry mirror (ECR Public — avoid Docker Hub rate limits)
run: |
sudo install -d /etc/pelagos
sudo install -m 0644 ci/registries.toml /etc/pelagos/registries.toml
- name: Reset test environment
run: sudo ./scripts/reset-test-env.sh
- name: Run integration tests
run: sudo -E env "PATH=$PATH" cargo test --test integration_tests -- --test-threads=1
e2e-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
- uses: Swatinem/rust-cache@v2
- name: Install system dependencies
run: |
sudo apt-get update
sudo apt-get install -y nftables iproute2 passt
- name: Build rootfs
run: sudo ./scripts/build-rootfs-tarball.sh
- name: Set up pelagos system directories
run: sudo ./scripts/setup.sh --no-user
- name: Configure registry mirror (ECR Public — avoid Docker Hub rate limits)
run: |
sudo install -d /etc/pelagos
sudo install -m 0644 ci/registries.toml /etc/pelagos/registries.toml
- name: Reset test environment
run: sudo ./scripts/reset-test-env.sh
- name: Run e2e tests
run: sudo -E env "PATH=$PATH" bash scripts/test-e2e.sh
wasm-e2e-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
targets: wasm32-wasip1
- uses: Swatinem/rust-cache@v2
- name: Install wasmtime
run: |
curl -fsSL https://wasmtime.dev/install.sh | bash
echo "$HOME/.wasmtime/bin" >> "$GITHUB_PATH"
- name: Build pelagos
run: cargo build
- name: Set up pelagos system directories
run: sudo ./scripts/setup.sh --no-user
- name: Run Wasm e2e tests
run: sudo -E env "PATH=$PATH" bash scripts/test-wasm-e2e.sh
wasm-embedded-e2e-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: "1.94.0"
targets: wasm32-wasip1,wasm32-wasip2
- uses: Swatinem/rust-cache@v2
- name: Install wasmtime
run: |
curl -fsSL https://wasmtime.dev/install.sh | bash
echo "$HOME/.wasmtime/bin" >> "$GITHUB_PATH"
- name: Set up pelagos system directories
run: sudo ./scripts/setup.sh --no-user
- name: Run embedded Wasm e2e tests
run: sudo -E env "PATH=$PATH" bash scripts/test-wasm-embedded-e2e.sh