Skip to content

Merge pull request #45 from mas-bandwidth/docs/wire-format-standard #146

Merge pull request #45 from mas-bandwidth/docs/wire-format-standard

Merge pull request #45 from mas-bandwidth/docs/wire-format-standard #146

Workflow file for this run

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