diff --git a/.github/workflows/drivers_ci.yml b/.github/workflows/drivers_ci.yml index 2e1d1971cb..918fb8c6d9 100644 --- a/.github/workflows/drivers_ci.yml +++ b/.github/workflows/drivers_ci.yml @@ -16,6 +16,11 @@ concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true +permissions: + id-token: write + contents: read + actions: read + jobs: paths-filter: runs-on: ubuntu-latest @@ -44,6 +49,7 @@ jobs: strategy: matrix: arch: [amd64, arm64] + fail-fast: false steps: - name: Checkout Libs ⤵️ # We need to skip each step because of https://github.com/orgs/community/discussions/9141. @@ -57,19 +63,39 @@ jobs: if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' run: | sudo apt update - sudo apt install -y --no-install-recommends ca-certificates cmake build-essential clang-14 llvm-14 git pkg-config autoconf automake libtool libelf-dev libcap-dev linux-headers-$(uname -r) + sudo apt install -y --no-install-recommends ca-certificates cmake build-essential clang-14 llvm-14 git pkg-config autoconf automake libtool libelf-dev libcap-dev sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 90 sudo update-alternatives --install /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-14 90 sudo update-alternatives --install /usr/bin/llc llc /usr/bin/llc-14 90 + git clone https://github.com/libbpf/bpftool.git --branch v7.3.0 --single-branch + cd bpftool + git submodule update --init + cd src && sudo make install + + - name: Install kernel headers (workaround) + if: matrix.arch == 'arm64' + run: | + sudo apt install -y --no-install-recommends + sudo mkdir -p /usr/src + sudo git clone --depth 1 --branch v$(uname -r) git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git /usr/src/linux + sudo rm /lib/modules/$(uname -r)/build + sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/build + sudo rm /lib/modules/$(uname -r)/source + sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/source + + - name: Install kernel headers + if: matrix.arch == 'amd64' + run: | + sudo apt install -y --no-install-recommends linux-headers-$(uname -r) + - uses: self-actuated/connect-ssh@master + - name: Build scap-open and drivers 🏗️ if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' run: | mkdir -p build cd build && cmake -DUSE_BUNDLED_DEPS=On -DBUILD_DRIVER=ON -DBUILD_LIBSCAP_MODERN_BPF=ON -DBUILD_BPF=On -DBUILD_LIBSCAP_GVISOR=On -DCREATE_TEST_TARGETS=On -DENABLE_LIBSCAP_TESTS=On ../ - make scap-open - make driver bpf - make libscap_test + make scap-open driver bpf libscap_test -j6 - name: Run scap-open with modern bpf 🏎️ if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' @@ -104,6 +130,7 @@ jobs: strategy: matrix: arch: [amd64, arm64] + fail-fast: false steps: - name: Checkout Libs ⤵️ if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' @@ -115,18 +142,37 @@ jobs: if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' run: | sudo apt update - sudo apt install -y --no-install-recommends ca-certificates cmake build-essential git pkg-config autoconf automake libelf-dev libcap-dev linux-headers-$(uname -r) clang-14 llvm-14 libtool gcc-multilib g++-multilib + sudo apt install -y --no-install-recommends ca-certificates cmake build-essential git pkg-config autoconf automake libelf-dev libcap-dev clang-14 llvm-14 libtool sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-14 90 sudo update-alternatives --install /usr/bin/llvm-strip llvm-strip /usr/bin/llvm-strip-14 90 sudo update-alternatives --install /usr/bin/llc llc /usr/bin/llc-14 90 + git clone https://github.com/libbpf/bpftool.git --branch v7.3.0 --single-branch + cd bpftool + git submodule update --init + cd src && sudo make install + + - name: Install kernel headers (workaround) and gcc + if: matrix.arch == 'arm64' + run: | + sudo apt install -y --no-install-recommends gcc g++ + sudo mkdir -p /usr/src + sudo git clone --depth 1 --branch v$(uname -r) git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git /usr/src/linux + sudo rm /lib/modules/$(uname -r)/build + sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/build + sudo rm /lib/modules/$(uname -r)/source + sudo ln -s /usr/src/linux-headers-$(uname -r)/ /lib/modules/$(uname -r)/source + + - name: Install kernel headers and gcc + if: matrix.arch == 'amd64' + run: | + sudo apt install -y --no-install-recommends linux-headers-$(uname -r) gcc-multilib g++-multilib - name: Build drivers tests 🏗️ if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' run: | mkdir -p build cd build && cmake -DUSE_BUNDLED_DEPS=ON -DENABLE_DRIVERS_TESTS=ON -DBUILD_LIBSCAP_MODERN_BPF=ON -DMODERN_BPF_DEBUG_MODE=ON -DBUILD_BPF=True -DBUILD_LIBSCAP_GVISOR=OFF ../ - make drivers_test - make driver bpf + make drivers_test driver bpf -j6 - name: Run drivers_test with modern bpf 🏎️ if: needs.paths-filter.outputs.driver_changed == 'true' || needs.paths-filter.outputs.libscap_changed == 'true' @@ -173,12 +219,12 @@ jobs: install: | apt update && apt install -y --no-install-recommends ca-certificates cmake build-essential clang llvm git pkg-config autoconf automake libtool libelf-dev wget libc-ares-dev libcurl4-openssl-dev libssl-dev libtbb-dev libjq-dev libjsoncpp-dev libgrpc++-dev protobuf-compiler-grpc libcap-dev libgtest-dev libprotobuf-dev linux-headers-generic - git clone https://github.com/libbpf/bpftool.git --branch v7.0.0 --single-branch + git clone https://github.com/libbpf/bpftool.git --branch v7.3.0 --single-branch cd bpftool git submodule update --init cd src && make install cd ../../ - git clone https://github.com/libbpf/libbpf.git --branch v1.0.1 --single-branch + git clone https://github.com/libbpf/libbpf.git --branch v1.3.0 --single-branch cd libbpf/src && BUILD_STATIC_ONLY=y DESTDIR=/ make install ln -s /usr/lib64/libbpf.a /usr/lib/${{env.PLATFORM}}-linux-gnu/ # Please note: we cannot inject the BPF probe inside QEMU, so right now, we only build it