Skip to content

docs: Prepare docs for release #1296

docs: Prepare docs for release

docs: Prepare docs for release #1296

Workflow file for this run

name: CI
on:
pull_request:
push:
branches:
- "main"
jobs:
lint:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Lint
run: |
curl -L https://github.com/libbpf/bpftool/releases/download/v7.6.0/bpftool-v7.6.0-amd64.tar.gz -o /tmp/bpftool.tar.gz && sudo tar -xvf /tmp/bpftool.tar.gz -C /usr/local/bin && sudo chmod +x /usr/local/bin/bpftool && rm /tmp/bpftool.tar.gz
cargo install bindgen-cli
cargo install --git https://github.com/aya-rs/aya -- aya-tool
sudo apt install libbpf-dev clang
cargo clippy --workspace --all-features -- -D warnings
cargo fmt --all -- --check
cd bombini-detectors-ebpf
cargo clippy --workspace --all-features -- -D warnings
cargo fmt --all -- --check
unit-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Unit tests
run: |
cargo test -- rule
build-bombini:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install musl toolchain and dependencies
run: |
sudo apt update && sudo apt install -y clang libbpf-dev llvm
# Change directory for compatibility with lima vm setup
mkdir -p /tmp/bombini-build && cp -r . /tmp/bombini-build/ && cd /tmp/bombini-build
# Install toolchain
cd bombini-detectors-ebpf && rustup show
cd .. && rustup show
- name: Cache dependencies
uses: Swatinem/rust-cache@v2
with:
workspaces: /tmp/bombini-build
- name: Build bombini and tests with musl
run: |
cd /tmp/bombini-build
cargo install bpf-linker bindgen-cli
# Build main binary and tests with musl
cargo xtask build --release
cargo test --release --no-run --target x86_64-unknown-linux-musl
# Copy files for testing
mkdir /tmp/bombini-test
# Copy test data
mkdir -p /tmp/bombini-test/bombini/tests && rsync -a bombini/tests/testdata /tmp/bombini-test/bombini/tests/
# Copy bpf programs
mkdir -p /tmp/bombini-test/target/bpfel-unknown-none/release && rsync target/bpfel-unknown-none/release/* /tmp/bombini-test/target/bpfel-unknown-none/release/
# Copy test binaries
mkdir -p /tmp/bombini-test/target/x86_64-unknown-linux-musl/release/deps && find target/x86_64-unknown-linux-musl/release/deps/ -maxdepth 1 -type f -executable -exec cp {} /tmp/bombini-test/target/x86_64-unknown-linux-musl/release/deps/ \;
# Copy bombini binary
cp target/x86_64-unknown-linux-musl/release/bombini /tmp/bombini-test/target/x86_64-unknown-linux-musl/release/
- name: Upload test artifacts
uses: actions/upload-artifact@v4
with:
name: bombini-musl-build
path: /tmp/bombini-test
retention-days: 1
test-ubuntu-kernel-6_2:
runs-on: ubuntu-24.04
needs: build-bombini
steps:
- uses: actions/checkout@v4
- uses: lima-vm/lima-actions/setup@v1
id: lima-actions-setup
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bombini-musl-build
path: /tmp/bombini-build
- uses: actions/cache@v4
id: lima-ubuntu-kernel-v6_2
with:
path: ~/.lima/ubuntu-kernel-v6.2
key: lima-vm-setup-${{ runner.os }}-ubuntu-kernel-v6_2-${{ hashFiles('.github/workflows/ci.yaml') }}
- name: Configure lima VM
if: steps.lima-ubuntu-kernel-v6_2.outputs.cache-hit != 'true'
run: |
limactl start --plain --name=ubuntu-kernel-v6.2 --cpus=1 --memory=1 template:ubuntu-22.04
echo "Include ~/.lima/*/ssh.config" > ~/.ssh/config
ssh lima-ubuntu-kernel-v6-2 'sudo sed -i '\''s/^\(GRUB_CMDLINE_LINUX=\)"[^"]*"/\1"lsm=bpf,integrity ima_policy=tcb ima_hash=sha256"/'\'' /etc/default/grub'
ssh lima-ubuntu-kernel-v6-2 sudo update-grub
ssh lima-ubuntu-kernel-v6-2 'sudo apt update && sudo apt install -y linux-image-6.2.0-39-generic linux-headers-6.2.0-39-generic'
ssh lima-ubuntu-kernel-v6-2 'curl -L https://github.com/bpftrace/bpftrace/releases/download/v0.24.0/bpftrace -o bpftrace && chmod +x bpftrace && sudo mv bpftrace /usr/local/bin/bpftrace'
limactl stop ubuntu-kernel-v6.2
- name: Run tests on kernel 6.2
run: |
limactl start ubuntu-kernel-v6.2
# Transfer pre-built artifacts
rsync -a -e ssh /tmp/bombini-build lima-ubuntu-kernel-v6-2:/tmp/
ssh lima-ubuntu-kernel-v6-2 'uname -a'
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/bombini"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-*"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-*"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-*"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-*"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-*"
ssh lima-ubuntu-kernel-v6-2 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-*"
# Run tests
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-* --test-threads 1 test_6_2_"
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-* --test-threads 1 test_6_2_"
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-* --test-threads 1 test_6_2_"
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-* --test-threads 1 test_6_2_"
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-* --test-threads 1 test_6_2_"
ssh lima-ubuntu-kernel-v6-2 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-* --test-threads 1 test_6_2_"
limactl stop ubuntu-kernel-v6.2
- name: Get Bombini logs from lima VM
if: failure()
run: |
rsync -a -e ssh 'lima-ubuntu-kernel-v6-2:/tmp/bombini-test-*' /tmp
- name: Upload Bombini logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: bombini-logs-ubuntu-kernel-v6_2
path: /tmp/bombini-test-*
retention-days: 3
test-ubuntu-kernel-6_8:
runs-on: ubuntu-24.04
needs: build-bombini
steps:
- uses: actions/checkout@v4
- uses: lima-vm/lima-actions/setup@v1
id: lima-actions-setup
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bombini-musl-build
path: /tmp/bombini-build
- uses: actions/cache@v4
id: lima-ubuntu-kernel-v6_8
with:
path: ~/.lima/ubuntu-kernel-v6.8
key: lima-vm-setup-${{ runner.os }}-ubuntu-kernel-v6_8-${{ hashFiles('.github/workflows/ci.yaml') }}
- name: Configure lima VM
if: steps.lima-ubuntu-kernel-v6_8.outputs.cache-hit != 'true'
run: |
limactl start --plain --name=ubuntu-kernel-v6.8 --cpus=1 --memory=1 template:ubuntu-24.04
echo "Include ~/.lima/*/ssh.config" > ~/.ssh/config
ssh lima-ubuntu-kernel-v6-8 'sudo apt-get update && sudo apt-get install -y linux-image-6.8.0-117-generic'
ssh lima-ubuntu-kernel-v6-8 'sudo sed -i '\''s/^\(GRUB_CMDLINE_LINUX=\)"[^"]*"/\1"lsm=bpf,integrity ima_policy=tcb"/'\'' /etc/default/grub'
ssh lima-ubuntu-kernel-v6-8 sudo update-grub
ssh lima-ubuntu-kernel-v6-8 'curl -L https://github.com/bpftrace/bpftrace/releases/download/v0.24.0/bpftrace -o bpftrace && chmod +x bpftrace && sudo mv bpftrace /usr/local/bin/bpftrace'
limactl stop ubuntu-kernel-v6.8
- name: Run tests on kernel 6.8
run: |
limactl start ubuntu-kernel-v6.8
# Transfer pre-built artifacts
rsync -a -e ssh /tmp/bombini-build lima-ubuntu-kernel-v6-8:/tmp/
ssh lima-ubuntu-kernel-v6-8 'uname -a'
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/bombini"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-*"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-*"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-*"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-*"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-*"
ssh lima-ubuntu-kernel-v6-8 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-*"
# Run tests
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-* --test-threads 1 test_6_2_ test_6_8_"
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-* --test-threads 1 test_6_2_ test_6_8_"
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-* --test-threads 1 test_6_2_ test_6_8_"
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-* --test-threads 1 test_6_2_ test_6_8_"
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-* --test-threads 1 test_6_2_ test_6_8_"
ssh lima-ubuntu-kernel-v6-8 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-* --test-threads 1 test_6_2_ test_6_8_"
limactl stop ubuntu-kernel-v6.8
- name: Get Bombini logs from lima VM
if: failure()
run: |
rsync -a -e ssh 'lima-ubuntu-kernel-v6-8:/tmp/bombini-test-*' /tmp
- name: Upload Bombini logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: bombini-logs-ubuntu-kernel-v6_8
path: /tmp/bombini-test-*
retention-days: 3
test-ubuntu-kernel-6_14:
runs-on: ubuntu-24.04
needs: build-bombini
steps:
- uses: actions/checkout@v4
- uses: lima-vm/lima-actions/setup@v1
id: lima-actions-setup
- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: bombini-musl-build
path: /tmp/bombini-build
- uses: actions/cache@v4
id: lima-ubuntu-kernel-v6_14
with:
path: ~/.lima/ubuntu-kernel-v6.14
key: lima-vm-setup-${{ runner.os }}-ubuntu-kernel-v6_14-${{ hashFiles('.github/workflows/ci.yaml') }}
- name: Configure lima VM
if: steps.lima-ubuntu-kernel-v6_14.outputs.cache-hit != 'true'
run: |
limactl start --plain --name=ubuntu-kernel-v6.14 --cpus=1 --memory=1 template:ubuntu-24.04
echo "Include ~/.lima/*/ssh.config" > ~/.ssh/config
ssh lima-ubuntu-kernel-v6-14 'sudo apt-get update && sudo apt-get install -y linux-image-6.14.0-37-generic'
ssh lima-ubuntu-kernel-v6-14 'sudo sed -i '\''s/^\(GRUB_CMDLINE_LINUX=\)"[^"]*"/\1"lsm=bpf,integrity ima_policy=tcb"/'\'' /etc/default/grub'
ssh lima-ubuntu-kernel-v6-14 sudo update-grub
ssh lima-ubuntu-kernel-v6-14 'curl -L https://github.com/bpftrace/bpftrace/releases/download/v0.24.0/bpftrace -o bpftrace && chmod +x bpftrace && sudo mv bpftrace /usr/local/bin/bpftrace'
limactl stop ubuntu-kernel-v6.14
- name: Run tests on kernel 6.14
run: |
limactl start ubuntu-kernel-v6.14
# Transfer pre-built artifacts
rsync -a -e ssh /tmp/bombini-build lima-ubuntu-kernel-v6-14:/tmp/
ssh lima-ubuntu-kernel-v6-14 'uname -a'
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/bombini"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-*"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-*"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-*"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-*"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-*"
ssh lima-ubuntu-kernel-v6-14 "chmod +x /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-*"
# Run tests
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/tests-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/filemon-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/kernelmon-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/netmon-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/procmon-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
ssh lima-ubuntu-kernel-v6-14 "sudo /tmp/bombini-build/target/x86_64-unknown-linux-musl/release/deps/sandbox-* --test-threads 1 test_6_2_ test_6_8_ test_6_14_"
limactl stop ubuntu-kernel-v6.14
- name: Get Bombini logs from lima VM
if: failure()
run: |
rsync -a -e ssh 'lima-ubuntu-kernel-v6-14:/tmp/bombini-test-*' /tmp
- name: Upload Bombini logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: bombini-logs-ubuntu-kernel-v6_14
path: /tmp/bombini-test-*
retention-days: 3