Merge pull request #45 from mas-bandwidth/docs/wire-format-standard #146
This file contains hidden or 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: CI | |
| on: | |
| push: | |
| branches: [ main ] | |
| pull_request: | |
| schedule: | |
| - cron: '0 8 * * 1' # weekly deep fuzz, mondays 08:00 UTC | |
| workflow_dispatch: | |
| jobs: | |
| build-and-test: | |
| name: ${{ matrix.os }} ${{ matrix.build_type }} | |
| runs-on: ${{ matrix.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ ubuntu-24.04, macos-15, windows-2025 ] | |
| build_type: [ Debug, Release ] | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Configure (Windows x64) | |
| if: runner.os == 'Windows' | |
| run: cmake -B build -A x64 | |
| - name: Configure | |
| if: runner.os != 'Windows' | |
| run: cmake -B build -DCMAKE_BUILD_TYPE=${{ matrix.build_type }} | |
| - name: Build | |
| run: cmake --build build --config ${{ matrix.build_type }} --parallel | |
| - name: Test | |
| run: ctest --test-dir build -C ${{ matrix.build_type }} --output-on-failure | |
| sanitize: | |
| name: asan + ubsan (ubuntu) | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Configure | |
| run: cmake -B build -DCMAKE_BUILD_TYPE=Debug -DRELIABLE_SANITIZE=ON | |
| - name: Build | |
| run: cmake --build build --parallel | |
| - name: Test | |
| run: ctest --test-dir build --output-on-failure | |
| deep-fuzz: | |
| name: deep fuzz (asan + ubsan, weekly) | |
| if: github.event_name == 'schedule' || github.event_name == 'workflow_dispatch' | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 120 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - name: Configure | |
| run: cmake -B build -DCMAKE_BUILD_TYPE=Debug -DRELIABLE_SANITIZE=ON | |
| - name: Build | |
| run: cmake --build build --parallel | |
| # fresh seed every run (printed to the log, so failures are reproducible) | |
| - name: Fuzz (2M iterations) | |
| run: ./build/bin/fuzz 2000000 | |
| conformance: | |
| name: STANDARD.md conformance | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| # Checks the wire-format specification against the implementation. The | |
| # checker parses artifacts the real library produces using ONLY what | |
| # STANDARD.md states, with no reference to the source. A failure means | |
| # the document and the code disagree — decide which is wrong, and fix | |
| # that one. A specification nothing verifies drifts, and a drifted spec | |
| # is worse than none because independent implementations are built on it. | |
| - name: Verify STANDARD.md | |
| run: python3 tools/conformance/verify_standard.py | |