diff options
Diffstat (limited to '.github/workflows/build-test-ci.yml')
-rw-r--r-- | .github/workflows/build-test-ci.yml | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/.github/workflows/build-test-ci.yml b/.github/workflows/build-test-ci.yml new file mode 100644 index 0000000..e4e5857 --- /dev/null +++ b/.github/workflows/build-test-ci.yml @@ -0,0 +1,80 @@ +# GitHub actions workflow. +# https://docs.github.com/en/actions/learn-github-actions/workflow-syntax-for-github-actions + +name: Build+Test CI + +on: [pull_request, push] + +jobs: + make: + strategy: + matrix: + os: [ubuntu-latest] + cc: [gcc, clang] + bb: [meson, muon] + sanitizer: [none, address, undefined] + fail-fast: false + runs-on: ${{ matrix.os }} + env: + CC: ${{ matrix.cc }} + BB: ${{ matrix.bb }} + SANITIZER: ${{ matrix.sanitizer }} + steps: + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install -y python3-pyelftools python3-pip \ + libcap-dev libseccomp-dev ninja-build \ + pkg-config + case "$BB" in + meson) + sudo pip3 install meson + ;; + muon) + wget https://muon.build/releases/edge/muon-edge-amd64-linux-static -O muon + chmod +x muon + sudo install -Dm755 muon /usr/local/bin/muon + ;; + esac + - uses: actions/checkout@v4 + - run: | + export PKG_CONFIG_PATH="/usr/lib/$(uname -m)-linux-gnu/pkgconfig/" + case "$BB" in + muon) + alias ninja="muon samu" + ;; + esac + + "$BB" setup -Duse_libcap=enabled \ + -Duse_seccomp=true \ + -Dbuild_manpages=disabled \ + -Dtests=true \ + -Duse_fuzzing=true \ + -Db_sanitize="${SANITIZER}" \ + build + ninja -C build + ( cd build && "$BB" test -v ; ) + + build-macos: + strategy: + matrix: + os: [macos-latest] + cc: [clang] + runs-on: ${{ matrix.os }} + env: + CC: ${{ matrix.cc }} + steps: + - name: Install dependencies + run: brew install meson ninja + - uses: actions/checkout@v4 + - run: | + meson -Duse_libcap=disabled \ + -Duse_seccomp=false \ + -Dbuild_manpages=disabled \ + -Dtests=true \ + -Duse_fuzzing=false \ + build + ninja -C build + # The unittests generally assume a Linux ELF host, so don't bother making + # sure they pass on macOS. Run them out of morbid curiosity I guess. + ninja -kC build test ||: |