We don't need the dummy ChangeLog file now #28
This file contains 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: Continuous Integration | |
on: [push, pull_request, workflow_dispatch] | |
jobs: | |
check_style: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt -q install clang-format | |
- uses: actions/checkout@v4 | |
- name: Check formatting | |
run: | | |
clang-format -i */*.[ch] | |
if git diff | grep ""; then | |
echo | |
echo "*** Formatting errors detected by clang-format." | |
echo "*** Please apply the above diff or run:" | |
echo " clang-format -i */*.[ch]" | |
echo | |
false | |
fi | |
- name: Check comment style | |
run: | | |
if grep " //" */*.[ch]; then | |
echo | |
echo "*** C++-style comments were detected in the above lines." | |
echo "*** Please change to use /* ... */ -style comments." | |
echo | |
false | |
fi | |
build_and_coverage: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt -q install doxygen | |
- uses: actions/checkout@v4 | |
- name: configure | |
run: | | |
LDFLAGS="$CFLAGS" ./autogen.sh \ | |
--enable-coverage | |
- name: make | |
run: make -j | |
- name: make check | |
run: | | |
make -j check || (cat test/test-suite.log; false) | |
- name: Generate coverage reports | |
run: | | |
mkdir artifacts | |
tar cf - src/*.gcov | tar -C artifacts -xf - | |
- name: Upload coverage-annotated source files | |
uses: actions/upload-artifact@v4 | |
with: | |
path: "artifacts" | |
name: coverage_reports | |
- name: make dist | |
run: | | |
make distcheck | |
make dist | |
- name: Make documentation zip | |
uses: actions/upload-artifact@v4 | |
with: | |
path: "doc/html" | |
name: documentation | |
valgrind_build: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt -q install valgrind | |
- uses: actions/checkout@v4 | |
- name: configure | |
run: | | |
LDFLAGS="$CFLAGS" ./autogen.sh \ | |
--enable-valgrind | |
- name: make | |
run: make -j | |
- name: make check | |
run: | | |
make -j check || (cat test/test-suite.log; false) | |
ubsan_build: | |
runs-on: ubuntu-latest | |
env: | |
CC: clang | |
# TODO: Add -fsanitize=address and memory too. | |
CFLAGS: "-fsanitize=undefined | |
-fno-omit-frame-pointer | |
-fno-sanitize-recover=all | |
-fno-sanitize=shift-base" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: configure | |
run: | | |
LDFLAGS="$CFLAGS" ./autogen.sh | |
- name: make check | |
run: | | |
make -j check || (cat test/test-suite.log; false) |