This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build and Publish | ||
on: | ||
push: | ||
branches: | ||
- main | ||
jobs: | ||
llvm: | ||
uses: aya-rs/bpf-linker/.github/workflows/llvm.yml | ||
build: | ||
name: Build | ||
runs-on: ubuntu-22.04 | ||
needs: llvm | ||
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.llvm != 'source' | ||
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 | ||
run: | | ||
set -euxo pipefail | ||
cargo clean -p llvm-sys | ||
cargo clean -p llvm-sys --release | ||
- name: Install bpf-linker | ||
run: | | ||
cargo install bpf-linker --no-default-features | ||
- 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 |