sync: cherry-pick for release/0.23.x
#9148
Workflow file for this run
This file contains hidden or 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: CI Build | |
| on: | |
| pull_request: | |
| push: | |
| branches: | |
| - master | |
| - 'release/**' | |
| - 'maintainers/**' | |
| workflow_dispatch: | |
| # Checks if any concurrent jobs under the same pull request or branch are being executed | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-libs-linux: | |
| name: build-libs-linux-${{ matrix.arch }} 😁 (${{ matrix.name }}) | |
| runs-on: ${{ (matrix.arch == 'arm64' && 'ubuntu-24.04-arm') || 'ubuntu-24.04' }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| arch: [amd64, arm64] | |
| name: [system_deps, bundled_deps, sanitizers, zig] | |
| include: | |
| - name: system_deps | |
| cmake_opts: -DBUILD_WARNINGS_AS_ERRORS=On -DBUILD_BPF=On -DUSE_BUNDLED_DEPS=False | |
| - name: bundled_deps | |
| cmake_opts: -DBUILD_WARNINGS_AS_ERRORS=On -DBUILD_BPF=On -DUSE_BUNDLED_DEPS=True | |
| - name: sanitizers | |
| cmake_opts: -DUSE_ASAN=On -DUSE_UBSAN=On -DUSE_BUNDLED_DEPS=False | |
| - name: zig | |
| cmake_opts: -DUSE_BUNDLED_DEPS=True | |
| container: | |
| image: debian:buster | |
| steps: | |
| - name: Install deps ⛓️ | |
| run: | | |
| # Use 20250630T203427Z debian apt snapshot as it still contains support for buster. | |
| printf "deb http://snapshot.debian.org/archive/debian/20250630T203427Z buster main\ndeb http://snapshot.debian.org/archive/debian-security/20250630T203427Z buster/updates main\ndeb http://snapshot.debian.org/archive/debian/20250630T203427Z buster-updates main" > /etc/apt/sources.list | |
| apt update && apt install -y --no-install-recommends curl ca-certificates build-essential git clang llvm pkg-config autoconf automake libtool libelf-dev wget libtbb-dev libjq-dev libjsoncpp-dev protobuf-compiler libgtest-dev libprotobuf-dev linux-headers-${{ matrix.arch }} sudo | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install cmake 🌊 | |
| uses: ./.github/actions/install-cmake | |
| - name: Install deps ⛓️ | |
| run: | | |
| .github/install-deps.sh | |
| - name: Git safe directory | |
| run: | | |
| git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: Install zig | |
| if: matrix.name == 'zig' | |
| uses: ./.github/actions/install-zig | |
| - name: Build and test 🏗️🧪 | |
| env: | |
| UBSAN_OPTIONS: print_stacktrace=1 | |
| run: | | |
| cmake -B build -S . ${{ matrix.cmake_opts }} -DENABLE_THREAD_POOL=ON | |
| KERNELDIR=/lib/modules/$(ls /lib/modules)/build cmake --build build --parallel $(nproc) | |
| cmake --build build --target run-unit-tests --parallel $(nproc) | |
| - name: Test sinsp-example and .scap files | |
| run: | | |
| cd build | |
| cmake --build . --target sinsp-example --parallel $(nproc) | |
| libsinsp/examples/sinsp-example -s ../test/libsinsp_e2e/resources/captures/curl_google.scap | grep --extended-regexp --invert-match '^(Time spent|Events/ms): ' > /tmp/curl_google.txt | |
| libsinsp/examples/sinsp-example -s ../test/libsinsp_e2e/resources/captures/curl_google_comments.scap | grep --extended-regexp --invert-match '^(Time spent|Events/ms): ' > /tmp/curl_google_comments.txt | |
| diff -u /tmp/curl_google.txt /tmp/curl_google_comments.txt | |
| # On zig, build also sinsp-example and check the glibc linked versions | |
| # to make sure we are actually using the correct glibc version. | |
| - name: Test zig build glibc version | |
| if: matrix.name == 'zig' | |
| run: | | |
| cd build | |
| objdump -T libsinsp/test/unit-test-libsinsp | grep -Eo 'GLIBC_\S+' | sort -u -t "." -k1,1n -k2,2n -k3,3n | |
| linked_glibc=$(objdump -T libsinsp/test/unit-test-libsinsp | grep -Eo 'GLIBC_\S+' | sort -u -t "." -k1,1n -k2,2n -k3,3n | tail -n1 | tr -d ')') | |
| if [ "$linked_glibc" != "GLIBC_2.17" ]; then | |
| echo "Expected glibc 2.17; found $linked_glibc" | |
| exit 1 | |
| fi | |
| build-libs-linux-amd64-static: | |
| name: build-libs-linux-amd64-static 🎃 | |
| runs-on: ubuntu-24.04 | |
| container: | |
| image: alpine:3.17 | |
| steps: | |
| - name: Install deps ⛓️ | |
| run: | | |
| apk add g++ gcc cmake make git bash perl linux-headers autoconf automake m4 libtool elfutils-dev libelf-static patch binutils clang llvm sudo curl | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install bpftool 🐝 | |
| uses: ./.github/actions/install-bpftool | |
| with: | |
| arch: 'amd64' | |
| - name: Git safe directory | |
| run: | | |
| git config --global --add safe.directory $GITHUB_WORKSPACE | |
| - name: Build and test 🏗️🧪 | |
| run: | | |
| cmake -B build -S . \ | |
| -DBUILD_BPF=On \ | |
| -DBUILD_DRIVER=Off \ | |
| -DUSE_BUNDLED_DEPS=On \ | |
| -DUSE_BUNDLED_LIBELF=Off \ | |
| -DUSE_SHARED_LIBELF=Off \ | |
| -DBUILD_LIBSCAP_MODERN_BPF=ON \ | |
| -DMUSL_OPTIMIZED_BUILD=On \ | |
| -DENABLE_THREAD_POOL=ON | |
| cmake --build build --target run-unit-tests --parallel $(nproc) | |
| build-shared-libs-linux-amd64: | |
| name: build-shared-libs-linux-amd64 🧐 | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install deps ⛓️ | |
| run: | | |
| sudo apt update | |
| sudo apt install -y --no-install-recommends ca-certificates build-essential git clang llvm pkg-config autoconf automake libtool libelf-dev wget libre2-dev libtbb-dev libjq-dev libjsoncpp-dev protobuf-compiler libgtest-dev libprotobuf-dev linux-headers-$(uname -r) | |
| sudo .github/install-deps.sh | |
| - name: Install cmake 🌊 | |
| uses: ./.github/actions/install-cmake | |
| - name: Build and test 🏗️🧪 | |
| run: | | |
| cmake -B build -S . \ | |
| -DBUILD_SHARED_LIBS=True \ | |
| -DUSE_BUNDLED_DEPS=False \ | |
| -DCMAKE_INSTALL_PREFIX=/tmp/libs-test \ | |
| -DENABLE_THREAD_POOL=ON | |
| cmake --build build --target run-unit-tests --parallel $(nproc) | |
| - name: Install | |
| run: | | |
| cmake --build build --target install | |
| - name: Test sinsp-example build with pkg-config | |
| run: | | |
| cd userspace/libsinsp/examples | |
| export PKG_CONFIG_PATH=/tmp/libs-test/lib/pkgconfig | |
| g++ -o sinsp-example *.cpp $(pkg-config --cflags --libs libsinsp) | |
| - name: Test sinsp-example runtime linker | |
| run: | | |
| cd userspace/libsinsp/examples | |
| export LD_LIBRARY_PATH=/tmp/libs-test/lib | |
| ./sinsp-example -h | |
| build-libs-others-amd64: | |
| name: build-libs-others-amd64 😨 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [windows-latest] | |
| crt: [MultiThreaded, MultiThreadedDLL] | |
| include: | |
| - os: macos-latest | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Build and test 🏗️🧪 | |
| run: | | |
| mkdir -p build | |
| # note: these long commands cannot be split on multiple lines as windows runners don't like `\` syntax. | |
| cd build && cmake -DUSE_BUNDLED_DEPS=ON -DCMAKE_BUILD_TYPE=Release -DCMAKE_MSVC_RUNTIME_LIBRARY=${{ matrix.crt }} -DCREATE_TEST_TARGETS=ON -DENABLE_THREAD_POOL=ON .. | |
| # note: changing 4 to $(nproc) results in the job freezing on macos... Not sure why. | |
| cmake --build . --config Release --parallel 4 && make run-unit-tests || libsinsp\test\Release\unit-test-libsinsp.exe | |
| build-shared-libs-macos-amd64: | |
| name: build-shared-libs-macos-amd64 😨 | |
| runs-on: macos-latest | |
| steps: | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install deps ⛓️ | |
| run: | | |
| HOMEBREW_NO_AUTO_UPDATE=1 brew install c-ares re2 tbb jq jsoncpp openssl uthash | |
| - name: Build 🏗️ | |
| run: | | |
| cmake -B build -S . \ | |
| -DBUILD_SHARED_LIBS=True \ | |
| -DUSE_BUNDLED_DEPS=False \ | |
| -DUSE_BUNDLED_VALIJSON=ON \ | |
| -DUSE_BUNDLED_BS_THREADPOOL=ON \ | |
| -DENABLE_THREAD_POOL=ON \ | |
| -DCMAKE_BUILD_TYPE=Release \ | |
| -DCREATE_TEST_TARGETS=OFF \ | |
| -DCMAKE_INSTALL_PREFIX=/tmp/libs-test | |
| cmake --build build --config Release --parallel $(nproc) | |
| - name: Install | |
| run: | | |
| cmake --build build --target install | |
| - name: Test sinsp-example build with pkg-config 🧪 | |
| run: | | |
| cd userspace/libsinsp/examples | |
| export PKG_CONFIG_PATH=/tmp/libs-test/lib/pkgconfig | |
| c++ --std=c++17 -o sinsp-example test.cpp util.cpp $(pkg-config --cflags --libs libsinsp) | |
| - name: Test sinsp-example runtime linker 🧪 | |
| run: | | |
| cd userspace/libsinsp/examples | |
| export DYLD_LIBRARY_PATH=/tmp/libs-test/lib | |
| ./sinsp-example -h | |
| # This job checks that a bundled deps of libs is as static as possible | |
| test-libs-static: | |
| name: test-libs-static (bundled_deps) | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install deps ⛓️ | |
| run: | | |
| sudo apt update | |
| sudo apt install -y --no-install-recommends ca-certificates build-essential clang-14 llvm-14 git pkg-config autoconf automake libtool libelf-dev libcap-dev linux-headers-$(uname -r) | |
| 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 | |
| - name: Install cmake 🌊 | |
| uses: ./.github/actions/install-cmake | |
| - name: Build sinsp-example | |
| run: | | |
| cmake -B build -S . \ | |
| -DUSE_BUNDLED_DEPS=On \ | |
| -DBUILD_DRIVER=ON \ | |
| -DBUILD_LIBSCAP_MODERN_BPF=ON \ | |
| -DBUILD_BPF=On \ | |
| -DBUILD_LIBSCAP_GVISOR=On \ | |
| -DCREATE_TEST_TARGETS=Off \ | |
| -DENABLE_LIBSCAP_TESTS=Off | |
| cmake --build build --target sinsp-example --parallel $(nproc) | |
| - name: Ensure that sinsp-example with bundled deps is as static as possible | |
| run: | | |
| ldd "build/libsinsp/examples/sinsp-example" | cut --fields=2 | cut --delimiter=' ' --fields=1 | rev | cut --delimiter='/' --fields=1 | rev | sort --unique --version-sort > ldd_out.txt | |
| cat > expected_ldd_out.txt <<EOF | |
| ld-linux-x86-64.so.2 | |
| libc.so.6 | |
| libgcc_s.so.1 | |
| libm.so.6 | |
| libstdc++.so.6 | |
| linux-vdso.so.1 | |
| EOF | |
| diff -u expected_ldd_out.txt ldd_out.txt | |
| run-e2e-tests-amd64: | |
| uses: ./.github/workflows/reusable_e2e_tests.yaml | |
| with: | |
| libsversion: ${{ github.sha }} | |
| secrets: inherit | |
| build-libs-emscripten: | |
| name: build-libs-emscripten 🧐 | |
| runs-on: ubuntu-22.04 | |
| steps: | |
| - name: Install deps ⛓️ | |
| run: | | |
| sudo apt update | |
| sudo apt install -y --no-install-recommends ca-certificates build-essential clang-14 llvm-14 git pkg-config autoconf automake libtool libelf-dev libcap-dev linux-headers-$(uname -r) emscripten | |
| - name: Checkout Libs ⤵️ | |
| uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install cmake 🌊 | |
| uses: ./.github/actions/install-cmake | |
| - name: Build and test 🏗️🧪 | |
| run: | | |
| emcmake cmake -B build -S . -DUSE_BUNDLED_DEPS=True | |
| emmake cmake --build build --target all --parallel $(nproc) | |
| emmake cmake --build build --target run-unit-tests --parallel $(nproc) |