Increase release CI timeout #1631
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: ["master"] | |
| pull_request: | |
| branches: ["master"] | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| lint: | |
| name: Swift Lint | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Check swift codestyle | |
| uses: cirruslabs/swiftlint-action@v1 | |
| with: | |
| args: --config .swiftlint.yml --strict | |
| cargo-format: | |
| name: Cargo Format | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: rustfmt | |
| - run: cargo +nightly fmt --all -- --check | |
| test: | |
| name: Build and Test (${{ matrix.config }}) | |
| runs-on: [self-hosted, linux] | |
| timeout-minutes: ${{ matrix.config == 'debug' && 90 || 75 }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| config: [debug, release] | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - run: sudo apt-get update | |
| - uses: awalsh128/cache-apt-pkgs-action@latest | |
| with: | |
| packages: librocksdb-dev libzstd-dev libbz2-dev liblz4-dev libjemalloc-dev | |
| - uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| aws-region: us-east-2 | |
| - name: Setup Swift | |
| uses: SwiftyLab/setup-swift@latest | |
| - name: Get Swift Version | |
| id: swift-version | |
| run: | | |
| SWIFT_VERSION=$(swift --version 2>&1 | head -n1 | sed -E 's/.*Swift version ([0-9.]+).*/\1/') | |
| echo "Detected Swift version: $SWIFT_VERSION" | |
| echo "version=$SWIFT_VERSION" >> $GITHUB_OUTPUT | |
| # SPM caching disabled due to 5.7 GB size causing 7+ minute upload delays | |
| # The cache save/upload time exceeds the build time, making caching counterproductive | |
| - name: Cache Cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Cache bandersnatch_vrfs static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libbandersnatch_vrfs.a | |
| key: ${{ runner.os }}-libs-libbandersnatch-${{ hashFiles('Utils/Sources/bandersnatch/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libbandersnatch | |
| - name: Cache bls static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libbls.a | |
| key: ${{ runner.os }}-libs-libbls-${{ hashFiles('Utils/Sources/bls/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libbls | |
| - name: Cache erasure-coding static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libec.a | |
| key: ${{ runner.os }}-libs-libec-${{ hashFiles('Utils/Sources/erasure-coding/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libec | |
| - name: Cache ed25519-zebra static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libed25519_zebra_ffi.a | |
| key: ${{ runner.os }}-libs-libed25519-${{ hashFiles('Utils/Sources/ed25519-zebra/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libed25519 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: rustfmt | |
| - name: Configure Sandbox Executable Path | |
| run: | | |
| swift build -c ${{ matrix.config }} --package-path PolkaVM --product boka-sandbox | |
| SANDBOX_BIN="$(swift build -c ${{ matrix.config }} --package-path PolkaVM --show-bin-path)/boka-sandbox" | |
| if [ ! -x "$SANDBOX_BIN" ]; then | |
| echo "boka-sandbox executable not found at: $SANDBOX_BIN" | |
| exit 1 | |
| fi | |
| echo "BOKA_SANDBOX_PATH=$SANDBOX_BIN" >> "$GITHUB_ENV" | |
| - name: Build (Debug) | |
| if: matrix.config == 'debug' | |
| run: make build | |
| - name: Test (Debug) | |
| if: matrix.config == 'debug' | |
| run: | | |
| # Run all tests except FuzzTests (they run in a separate parallel job) | |
| for pkg in Blockchain Codec Database JAMTests Networking Node PolkaVM RPC Utils; do | |
| echo "Testing $pkg (debug)..." | |
| if [ "$pkg" = "JAMTests" ]; then | |
| # Skip FuzzTests for JAMTests as they run in a separate parallel job | |
| swift test --package-path "$pkg" --skip "FuzzTests" | |
| else | |
| swift test --package-path "$pkg" | |
| fi | |
| done | |
| cargo test --manifest-path Utils/Sources/bandersnatch/Cargo.toml | |
| - name: Build and Test (Release) | |
| if: matrix.config == 'release' | |
| run: | | |
| make deps | |
| for pkg in Blockchain Codec Database JAMTests Networking Node PolkaVM RPC Utils; do | |
| echo "Testing $pkg (release)..." | |
| if [ "$pkg" = "JAMTests" ]; then | |
| # Skip FuzzTests for JAMTests as they run in a separate parallel job | |
| swift test -c release --package-path "$pkg" --skip "FuzzTests" | |
| else | |
| swift test -c release --package-path "$pkg" | |
| fi | |
| done | |
| cargo test --manifest-path Utils/Sources/bandersnatch/Cargo.toml --release | |
| fuzz-test: | |
| name: Fuzz Test (${{ matrix.mode }}) | |
| runs-on: [self-hosted, linux] | |
| timeout-minutes: 60 | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| mode: | |
| - interpreter | |
| - sandbox | |
| - jit | |
| - jit-sandbox | |
| steps: | |
| - name: Checkout Code | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| - run: sudo apt-get update | |
| - uses: awalsh128/cache-apt-pkgs-action@latest | |
| with: | |
| packages: librocksdb-dev libzstd-dev libbz2-dev liblz4-dev libjemalloc-dev | |
| - uses: aws-actions/configure-aws-credentials@v4 | |
| with: | |
| aws-region: us-east-2 | |
| - name: Setup Swift | |
| uses: SwiftyLab/setup-swift@latest | |
| - name: Get Swift Version | |
| id: swift-version | |
| run: | | |
| SWIFT_VERSION=$(swift --version 2>&1 | head -n1 | sed -E 's/.*Swift version ([0-9.]+).*/\1/') | |
| echo "Detected Swift version: $SWIFT_VERSION" | |
| echo "version=$SWIFT_VERSION" >> $GITHUB_OUTPUT | |
| - name: Cache Cargo | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/bin/ | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
| - name: Cache bandersnatch_vrfs static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libbandersnatch_vrfs.a | |
| key: ${{ runner.os }}-libs-libbandersnatch-${{ hashFiles('Utils/Sources/bandersnatch/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libbandersnatch | |
| - name: Cache bls static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libbls.a | |
| key: ${{ runner.os }}-libs-libbls-${{ hashFiles('Utils/Sources/bls/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libbls | |
| - name: Cache erasure-coding static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libec.a | |
| key: ${{ runner.os }}-libs-libec-${{ hashFiles('Utils/Sources/erasure-coding/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libec | |
| - name: Cache ed25519-zebra static lib | |
| uses: actions/cache@v4 | |
| with: | |
| path: .lib/libed25519_zebra_ffi.a | |
| key: ${{ runner.os }}-libs-libed25519-${{ hashFiles('Utils/Sources/ed25519-zebra/**') }} | |
| restore-keys: | | |
| ${{ runner.os }}-libs-libed25519 | |
| - name: Setup Rust | |
| uses: dtolnay/rust-toolchain@nightly | |
| with: | |
| components: rustfmt | |
| - name: Configure Sandbox Executable Path | |
| run: | | |
| swift build -c release --package-path PolkaVM --product boka-sandbox | |
| SANDBOX_BIN="$(swift build -c release --package-path PolkaVM --show-bin-path)/boka-sandbox" | |
| if [ ! -x "$SANDBOX_BIN" ]; then | |
| echo "boka-sandbox executable not found at: $SANDBOX_BIN" | |
| exit 1 | |
| fi | |
| echo "BOKA_SANDBOX_PATH=$SANDBOX_BIN" >> "$GITHUB_ENV" | |
| - name: Build dependencies | |
| run: make deps | |
| - name: Run Fuzz Tests (${{ matrix.mode }}) | |
| run: | | |
| # Set test filter based on mode | |
| case "${{ matrix.mode }}" in | |
| interpreter) | |
| TEST_FILTER="FuzzTests.v072_interpreter" | |
| ;; | |
| sandbox) | |
| TEST_FILTER="FuzzTests.v072_sandbox" | |
| ;; | |
| jit) | |
| TEST_FILTER="FuzzTests.v072_jit" | |
| ;; | |
| jit-sandbox) | |
| TEST_FILTER="FuzzTests.v072_jit_sandbox" | |
| ;; | |
| esac | |
| echo "Running fuzz tests for mode: ${{ matrix.mode }}" | |
| echo "Test filter: $TEST_FILTER" | |
| # Run only the fuzz tests for this specific mode | |
| swift test -c release --package-path JAMTests --filter "$TEST_FILTER" |