Skip to content

Commit

Permalink
ci: run build & unit tests in GH Actions
Browse files Browse the repository at this point in the history
tbd
  • Loading branch information
mrc0mmand committed Jan 3, 2024
1 parent b4d7ccc commit b0a2264
Show file tree
Hide file tree
Showing 2 changed files with 112 additions and 0 deletions.
75 changes: 75 additions & 0 deletions .github/workflows/ci.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/bash
set -eux
set -o pipefail

PHASE="${1:?}"
COMMON_BUILD_OPTS=(
-Dauthfw=pam
-Dexamples=true
-Dgtk_doc=true
-Dintrospection=true
-Dsession_tracking=libsystemd-login
-Dtests=true
)

if [[ "$PHASE" =~ ^CLANG_ ]]; then
export CC=clang
export CXX=clang++
fi

case "$PHASE" in
BUILD_GCC|BUILD_CLANG)
# Build test with various levels of optimization and other flags affecting the build

BUILD_TEST_FLAGS=(
--optimization=0
--optimization=3
--optimization=s
-Db_ndebug=true
)

for opt in "${BUILD_TEST_FLAGS[@]}"; do
meson setup build \
-Dman=true \
-Dcpp_args="-D_FORTIFY_SOURCE=2" \
"${COMMON_BUILD_OPTS[@]}" \
"$opt"
meson compile -C build -v
rm -rf build
done
;;

GCC|CLANG)
# Build + unit tests

meson setup build \
-Dman=true \
-Dcpp_args="-D_FORTIFY_SOURCE=2" \
"${COMMON_BUILD_OPTS[@]}"

meson compile -C build -v
meson test -C build --print-errorlogs
DESTDIR="$PWD/install-test" meson install -C build
;;

GCC_ASAN_UBSAN|CLANG_ASAN_UBSAN)
# Build + unit tests with ASan and UBSan

meson setup build \
-Dman=false \
-Db_sanitize=address,undefined \
--optimization=1 \
-Db_lundef=false \
"${COMMON_BUILD_OPTS[@]}"

# Note: we need to set verify_asan_link_order=0 as polkit LD_PRELOADs libmocklibc in unit tests
export ASAN_OPTIONS=strict_string_checks=1:detect_stack_use_after_return=1:check_initialization_order=1:strict_init_order=1:verify_asan_link_order=0
export UBSAN_OPTIONS=print_stacktrace=1:print_summary=1:halt_on_error=1

meson compile -C build -v
meson test -C build --print-errorlogs
;;
*)
echo >&2 "Unknown phase '$PHASE'"
exit 1
esac
37 changes: 37 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
---
# vi: ts=2 sw=2 et:

name: Build & test
on:
pull_request:
branches:
- main
push:
branches:
- main

permissions:
contents: read

jobs:
build:
runs-on: ubuntu-latest
container: registry.fedoraproject.org/fedora:latest
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}-${{ matrix.phase }}
cancel-in-progress: true
strategy:
fail-fast: false
matrix:
phase: [BUILD_GCC, GCC, GCC_ASAN_UBSAN, BUILD_CLANG, CLANG, CLANG_ASAN_UBSAN]
steps:
- name: Repository checkout
uses: actions/checkout@v4

- name: Install build & test dependencies
run: |
sudo dnf install -y dnf-plugins-core python3-dbusmock clang compiler-rt libasan libubsan
sudo dnf builddep -y polkit
- name: Build & test
run: sudo --preserve-env=GITHUB_ACTIONS,CI .github/workflows/ci.sh ${{ matrix.phase }}

0 comments on commit b0a2264

Please sign in to comment.