mirror of
https://github.com/sigp/lighthouse.git
synced 2026-03-09 19:51:47 +00:00
## Issue Addressed N/A ## Proposed Changes Add some caching to the test suite and to the aarch64 cross-compile in the docker build. ## Additional Info Cache hits only occur if the Cargo.lock file is unchanged, Github Actions runner OS matches, and the cache is "in scope". Some documentation on github actions cache scoping is here: https://docs.github.com/en/free-pro-team@latest/actions/guides/caching-dependencies-to-speed-up-workflows#matching-a-cache-key I'm not sure how frequently we'll get cache hits, I imagine only on smaller PR's or updates to the same PR. And there is a cache size limit that we may end up reaching quickly. But Github actions handles evictions if we go over that limit. Not sure how much of an impact this will end up having but I don't really see a downside to trying it out. Co-authored-by: realbigsean <seananderson33@gmail.com>
206 lines
6.2 KiB
YAML
206 lines
6.2 KiB
YAML
name: test-suite
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- unstable
|
|
- staging
|
|
- trying
|
|
- 'pr/*'
|
|
pull_request:
|
|
env:
|
|
# Deny warnings in CI
|
|
RUSTFLAGS: "-D warnings"
|
|
PORTABLE: true
|
|
jobs:
|
|
cargo-fmt:
|
|
name: cargo-fmt
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Get latest version of stable Rust
|
|
run: rustup update stable
|
|
- name: Check formatting with cargo fmt
|
|
run: make cargo-fmt
|
|
release-tests-ubuntu:
|
|
name: release-tests-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Cache cargo directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Cache target release directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: target/release
|
|
key: ${{ runner.os }}-target-release-portable-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Get latest version of stable Rust
|
|
run: rustup update stable
|
|
- name: Install ganache-cli
|
|
run: sudo npm install -g ganache-cli
|
|
- name: Run tests in release
|
|
run: make test-release
|
|
debug-tests-ubuntu:
|
|
name: debug-tests-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Cache cargo directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Cache target debug directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: target/debug
|
|
key: ${{ runner.os }}-target-debug-portable-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Get latest version of stable Rust
|
|
run: rustup update stable
|
|
- name: Install ganache-cli
|
|
run: sudo npm install -g ganache-cli
|
|
- name: Run tests in debug
|
|
run: make test-debug
|
|
state-transition-vectors-ubuntu:
|
|
name: state-transition-vectors-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Get latest version of stable Rust
|
|
run: rustup update stable
|
|
- name: Run state_transition_vectors in release.
|
|
run: make run-state-transition-tests
|
|
ef-tests-ubuntu:
|
|
name: ef-tests-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Get latest version of stable Rust
|
|
run: rustup update stable
|
|
- name: Run eth2.0-spec-tests with blst, milagro and fake_crypto
|
|
run: make test-ef
|
|
dockerfile-ubuntu:
|
|
name: dockerfile-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Build the root Dockerfile
|
|
run: docker build .
|
|
eth1-simulator-ubuntu:
|
|
name: eth1-simulator-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Cache cargo directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Cache target release directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: target/release
|
|
key: ${{ runner.os }}-target-release-portable-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Install ganache-cli
|
|
run: sudo npm install -g ganache-cli
|
|
- name: Run the beacon chain sim that starts from an eth1 contract
|
|
run: cargo run --release --bin simulator eth1-sim
|
|
no-eth1-simulator-ubuntu:
|
|
name: no-eth1-simulator-ubuntu
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Cache cargo directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: |
|
|
~/.cargo/registry/index/
|
|
~/.cargo/registry/cache/
|
|
~/.cargo/git/db/
|
|
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Cache target release directory
|
|
uses: actions/cache@v2
|
|
with:
|
|
path: target/release
|
|
key: ${{ runner.os }}-target-release-portable-${{ hashFiles('**/Cargo.lock') }}
|
|
- name: Install ganache-cli
|
|
run: sudo npm install -g ganache-cli
|
|
- name: Run the beacon chain sim without an eth1 connection
|
|
run: cargo run --release --bin simulator no-eth1-sim
|
|
check-benchmarks:
|
|
name: check-benchmarks
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Typecheck benchmark code without running it
|
|
run: make check-benches
|
|
check-consensus:
|
|
name: check-consensus
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Typecheck consensus code in strict mode
|
|
run: make check-consensus
|
|
clippy:
|
|
name: clippy
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Lint code for quality and style with Clippy
|
|
run: make lint
|
|
- name: Certify Cargo.lock freshness
|
|
run: git diff --exit-code Cargo.lock
|
|
arbitrary-check:
|
|
name: arbitrary-check
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Validate state_processing feature arbitrary-fuzz
|
|
run: make arbitrary-fuzz
|
|
cargo-audit:
|
|
name: cargo-audit
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Run cargo audit to identify known security vulnerabilities reported to the RustSec Advisory Database
|
|
run: make audit
|
|
cargo-udeps:
|
|
name: cargo-udeps
|
|
runs-on: ubuntu-latest
|
|
needs: cargo-fmt
|
|
steps:
|
|
- uses: actions/checkout@v1
|
|
- name: Install a nightly compiler with rustfmt, as a kind of quality control
|
|
run: rustup toolchain install --component=rustfmt nightly
|
|
- name: Install cargo-udeps
|
|
run: cargo install cargo-udeps --locked
|
|
- name: Run cargo udeps to identify unused crates in the dependency graph
|
|
run: make udeps
|
|
env:
|
|
# Allow warnings on Nightly
|
|
RUSTFLAGS: ""
|