feat(log): structured logging #1166
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: | |
| branches: | |
| - main | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }}-ci | |
| cancel-in-progress: true | |
| env: | |
| ZIG_VERSION: "0.14.1" | |
| NODE_VERSION: "24" | |
| jobs: | |
| zbuild: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Install zbuild | |
| run: | | |
| git clone https://github.com/ChainSafe/zbuild.git | |
| cd zbuild | |
| zig build -Doptimize=ReleaseFast | |
| sudo cp zig-out/bin/zbuild /usr/local/bin/zbuild | |
| - name: Verify zbuild | |
| run: zbuild version | |
| - name: Check if build.zig is sync'ed with zbuild.zon | |
| run: | | |
| zbuild sync | |
| git diff --exit-code | |
| build-test: | |
| name: build & test (${{ matrix.os }}) | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: | |
| - ubuntu-latest | |
| - ubuntu-24.04-arm | |
| - macos-latest | |
| # - macos-13 # skip because hashtree does not support macos x64 yet | |
| # - windows-latest # TODO: https://github.com/ChainSafe/state-transition-z/issues/10 | |
| runs-on: ${{ matrix.os }} | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ${{ matrix.os }}-${{ env.ZIG_VERSION }} | |
| # Zig fmt is failing on windows and is redundant to run all platforms. So we run only on linux. | |
| - name: Check formatting | |
| if: matrix.os == 'ubuntu-latest' | |
| run: zig fmt --check . | |
| - name: Run hashing tests | |
| run: | | |
| zig build test:hashing | |
| - name: Run persistent_merkle_tree tests | |
| run: | | |
| zig build test:persistent_merkle_tree | |
| - name: Run ssz tests | |
| run: | | |
| zig build test:ssz | |
| - name: Run hex tests | |
| run: | | |
| zig build test:hex | |
| - name: Run config tests | |
| run: | | |
| zig build test:config | |
| - name: Run constants tests | |
| run: | | |
| zig build test:constants | |
| - name: Run consensus-type tests | |
| run: | | |
| zig build test:consensus_types | |
| - name: Run fork_types tests | |
| run: | | |
| zig build test:fork_types | |
| - name: Run era tests | |
| run: | | |
| zig build test:era | |
| - name: Run preset tests | |
| run: | | |
| zig build test:preset | |
| - name: Run bls tests | |
| run: | | |
| zig build test:bls | |
| - name: Run state-transition tests | |
| run: | | |
| zig build test:state_transition | |
| - name: Build benchmarks | |
| run: | | |
| zig build build-exe:bench_hashing build-exe:bench_merkle_gindex build-exe:bench_merkle_node build-exe:bench_ssz_attestation build-exe:bench_ssz_block build-exe:bench_ssz_state build-exe:bench_process_block build-exe:bench_process_epoch | |
| build-test-slow: | |
| name: slow tests | |
| # It takes time to download and run these tests, so we only run them on ubuntu-latest | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Restore spec tests cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: fixtures/era | |
| key: era-files-${{ hashFiles('build.zig') }} # downloaded era files defined in build.zig | |
| - name: Download era files | |
| run: | | |
| zig build run:download_era_files | |
| - name: Run slow int tests | |
| run: | | |
| zig build test:int | |
| spec-test-ssz: | |
| name: spec tests - ssz | |
| # It takes time to download and run spec tests, so we only run them on ubuntu-latest | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Restore spec tests cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: test/spec/spec_tests | |
| key: spec-test-data-${{ hashFiles('build.zig') }} # spec test version is defined in build.zig | |
| - name: Download spec tests | |
| run: | | |
| zig build run:download_spec_tests | |
| - name: Write ssz_generic spec tests | |
| run: | | |
| zig build run:write_ssz_generic_spec_tests | |
| - name: Write ssz_static spec tests | |
| run: | | |
| zig build run:write_ssz_static_spec_tests | |
| - name: Run ssz_generic spec tests | |
| run: | | |
| zig build test:ssz_generic_spec_tests | |
| - name: Run minimal ssz_static spec tests | |
| run: | | |
| zig build test:ssz_static_spec_tests -Dpreset=minimal | |
| - name: Run mainnet ssz_static spec tests | |
| run: | | |
| zig build test:ssz_static_spec_tests -Dpreset=mainnet | |
| spec-test-bls: | |
| name: spec tests - bls | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Restore spec tests cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: test/spec/spec_tests | |
| key: spec-test-data-${{ hashFiles('build.zig') }} | |
| - name: Download spec tests | |
| run: | | |
| zig build run:download_spec_tests | |
| - name: Write BLS spec tests | |
| run: | | |
| zig build run:write_bls_spec_tests | |
| - name: Run BLS spec tests | |
| run: | | |
| zig build test:bls_spec_tests | |
| spec-test-minimal: | |
| name: spec tests - minimal | |
| # It takes time to download and run spec tests, so we only run them on ubuntu-latest | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Restore spec tests cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: test/spec/spec_tests | |
| key: spec-test-data-${{ hashFiles('build.zig') }} # spec test version is defined in build.zig | |
| - name: Download spec tests | |
| run: | | |
| zig build run:download_spec_tests | |
| - name: Write spec tests | |
| run: | | |
| zig build run:write_spec_tests | |
| - name: Run spec tests - minimal | |
| run: | | |
| zig build test:spec_tests -Dpreset=minimal | |
| spec-test-mainnet: | |
| name: spec tests - mainnet | |
| # It takes time to download and run spec tests, so we only run them on ubuntu-latest | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Restore spec tests cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: test/spec/spec_tests | |
| key: spec-test-data-${{ hashFiles('build.zig') }} # spec test version is defined in build.zig | |
| - name: Download spec tests | |
| run: | | |
| zig build run:download_spec_tests | |
| - name: Write spec tests | |
| run: | | |
| zig build run:write_spec_tests | |
| - name: Run spec tests - mainnet | |
| run: | | |
| zig build test:spec_tests -Dpreset=mainnet | |
| build-fuzz: | |
| name: build fuzz harnesses | |
| runs-on: ubuntu-latest | |
| needs: build-test | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Install AFL++ and LLVM | |
| run: | | |
| sudo apt-get update | |
| sudo DEBIAN_FRONTEND=noninteractive apt-get install -y afl++ llvm | |
| - name: Verify AFL++ and LLVM are available | |
| run: | | |
| afl-cc --version | |
| if command -v llvm-config >/dev/null 2>&1; then | |
| llvm-config --version | |
| else | |
| llvm-config-18 --version | |
| fi | |
| - name: Build fuzz harnesses | |
| run: | | |
| cd test/fuzz && zig build | |
| bindings-test: | |
| name: bindings - test | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Setup pnpm | |
| uses: pnpm/action-setup@v4 | |
| - name: Setup Node.js | |
| uses: actions/setup-node@v6 | |
| with: | |
| node-version: ${{ env.NODE_VERSION }} | |
| cache: pnpm | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Install dependencies | |
| run: | | |
| pnpm install | |
| - name: Run bindings formatter | |
| run: | | |
| pnpm biome ci | |
| - name: Build bindings | |
| run: | | |
| zig build build-lib:bindings -Doptimize=ReleaseSafe | |
| - name: Restore era files cache | |
| uses: actions/cache@v4 | |
| with: | |
| path: fixtures/era | |
| key: era-files-${{ hashFiles('build.zig') }} # downloaded era files defined in build.zig | |
| - name: Download era files | |
| run: | | |
| zig build run:download_era_files | |
| - name: Test bindings | |
| run: | | |
| pnpm test | |
| build-examples: | |
| name: build examples | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout Repository | |
| uses: actions/checkout@v4 | |
| - name: Install Zig | |
| uses: mlugg/setup-zig@v2 | |
| with: | |
| version: ${{ env.ZIG_VERSION }} | |
| cache-key: ubuntu-latest-${{ env.ZIG_VERSION }} | |
| - name: Build metrics example | |
| run: | | |
| zig build build-exe:metrics_stf |