Skip to content

actions

actions #82

name: Build and Publish
on:
push:
branches:
- main
jobs:
build:
name: Build
runs-on: ubuntu-22.04
strategy:
matrix:
arch:
- x86_64
- aarch64
llvm:
- 19
env:
CARGO_CFG_BPF_TARGET_ARCH: ${{ matrix.arch }}
steps:
- uses: actions/checkout@v4
- name: Install rustup nightly
run: |
rustup toolchain install nightly --component rust-src
rustup target add ${{ matrix.arch }}-unknown-linux-musl
echo "$HOME/.cargo/bin" >> $GITHUB_PATH
- uses: Swatinem/rust-cache@v2
with:
prefix-key: ${{ matrix.arch }}
- name: Install LLVM
if: matrix.arch == 'aarch64'
run: |
set -euxo pipefail
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
echo -e deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-${{ matrix.llvm }} main | sudo tee /etc/apt/sources.list.d/llvm.list
sudo apt update
sudo apt -y install llvm-${{ matrix.llvm }}-dev libpolly-${{ matrix.llvm }}-dev
echo /usr/lib/llvm-${{ matrix.llvm }}/bin >> $GITHUB_PATH
- name: Bust llvm-sys cache
if: matrix.arch == 'aarch64'
run: |
set -euxo pipefail
cargo clean -p llvm-sys
cargo clean -p llvm-sys --release
- name: Install bpf-linker
run: |
if ${{ matrix.arch == 'aarch64' }}; then
cargo install bpf-linker --no-default-features
else
cargo install bpf-linker
fi
- name: Generate vmlinux.rs
run: |
cargo install aya-tool --git https://github.com/aya-rs/aya.git
cargo install bindgen-cli
aya-tool generate task_struct sockaddr_in sockaddr_in6 inet_sock ipv6hdr tcphdr udphdr icmphdr icmp6hdr > furui-ebpf/src/vmlinux.rs
- name: Build target
run: |
cargo build --release --target ${{ matrix.arch }}-unknown-linux-musl
- uses: actions/upload-artifact@v3
with:
name: furui-${{ matrix.arch }}
path: target/${{ matrix.arch }}-unknown-linux-musl/release/furui