Skip to content

feat(log): structured logging #1166

feat(log): structured logging

feat(log): structured logging #1166

Workflow file for this run

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