name: CI on: [push, pull_request] jobs: lint: runs-on: ubuntu-latest container: gitea.tap-tap.win/taptap/fastsync-ci:v7 steps: - name: Checkout uses: actions/checkout@v4 - name: clang-format check run: find src/ tests/ -name '*.c' -o -name '*.h' | xargs clang-format --dry-run --Werror - name: cppcheck run: cppcheck --enable=warning,style,performance,portability --suppress=missingIncludeSystem --error-exitcode=1 --inline-suppr src/ tests/ build-and-test: runs-on: ubuntu-latest container: gitea.tap-tap.win/taptap/fastsync-ci:v7 needs: lint steps: - name: Checkout uses: actions/checkout@v4 - name: Configure run: cmake -B build -S . -DSTRICT_WARNINGS=ON - name: Build run: cmake --build build -j$(nproc) - name: Unit Tests run: ctest --test-dir build --output-on-failure -j$(nproc) - name: Integration Tests run: python3 -m pytest tests/integration/ -v --tb=short sanitizers: runs-on: ubuntu-latest container: gitea.tap-tap.win/taptap/fastsync-ci:v7 needs: lint strategy: matrix: sanitizer: [address] steps: - name: Checkout uses: actions/checkout@v4 - name: Configure run: cmake -B build-${{ matrix.sanitizer }} -S . -DSANITIZER=${{ matrix.sanitizer }} - name: Build run: cmake --build build-${{ matrix.sanitizer }} -j$(nproc) - name: Unit Tests run: ctest --test-dir build-${{ matrix.sanitizer }} --output-on-failure coverage: runs-on: ubuntu-latest container: gitea.tap-tap.win/taptap/fastsync-ci:v7 needs: lint steps: - name: Checkout uses: actions/checkout@v4 - name: Configure run: cmake -B build -S . -DENABLE_COVERAGE=ON -DSTRICT_WARNINGS=ON - name: Build run: cmake --build build -j$(nproc) - name: Unit Tests run: ctest --test-dir build --output-on-failure - name: Coverage Report run: | lcov --capture --directory build --output-file coverage.info --rc lcov_branch_coverage=1 lcov --remove coverage.info '/usr/*' '*/tests/*' '*/xxhash/*' --output-file coverage.info lcov --list coverage.info valgrind: runs-on: ubuntu-latest container: gitea.tap-tap.win/taptap/fastsync-ci:v7 needs: lint steps: - name: Checkout uses: actions/checkout@v4 - name: Configure run: cmake -B build -S . -DSTRICT_WARNINGS=ON - name: Build run: cmake --build build -j$(nproc) - name: Valgrind Memcheck run: valgrind --leak-check=full --show-leak-kinds=all --error-exitcode=1 ./build/tests