aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/build-test-ci.yml')
-rw-r--r--.github/workflows/build-test-ci.yml80
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 ||: