name: CI on: workflow_dispatch: pull_request: push: branches: - main jobs: test: name: Test (+${{ matrix.rust }}) on ${{ matrix.os }} # The large timeout is to accommodate Windows builds timeout-minutes: 60 runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] rust: [stable, beta] env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} override: true - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch - name: Install LLVM on Windows if: matrix.os == 'windows-latest' run: choco install llvm -y - name: Skip network tests on Ubuntu and Windows # Ubuntu runners don't have network or DNS configured during test steps # Windows runners have an unreliable network if: matrix.os == 'ubuntu-latest' || matrix.os == 'windows-latest' run: echo "ZEBRA_SKIP_NETWORK_TESTS=1" >> $GITHUB_ENV - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - name: Run tests uses: actions-rs/cargo@v1 with: command: test args: --verbose --all # Explicitly run any tests that are usually #[ignored], modulo ZEBRA_SKIP_NETWORK_TESTS - name: Run zebrad large sync tests uses: actions-rs/cargo@v1 with: command: test args: --verbose --manifest-path zebrad/Cargo.toml sync_large_checkpoints_ -- --ignored build-chain-no-features: name: Build (+${{ matrix.rust }}) zebra-chain w/o features on ubuntu-latest timeout-minutes: 60 runs-on: ubuntu-latest strategy: matrix: rust: [stable, beta] env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} override: true - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - name: Run build without features enabled working-directory: ./zebra-chain run: cargo build --verbose --no-default-features build: name: Build (+${{ matrix.rust }}) on ${{ matrix.os }} timeout-minutes: 60 runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] rust: [stable, beta] env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: ${{ matrix.rust }} override: true - name: Install LLVM on Windows if: matrix.os == 'windows-latest' run: choco install llvm -y - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - name: Build uses: actions-rs/cargo@v1 with: command: build args: --verbose --release clippy: name: Clippy (stable) timeout-minutes: 30 runs-on: ubuntu-latest env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable components: clippy override: true - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - name: Run clippy uses: actions-rs/clippy-check@v1 with: name: Clippy (stable) token: ${{ secrets.GITHUB_TOKEN }} args: --all-features --all-targets -- -D warnings fmt: name: Rustfmt timeout-minutes: 30 runs-on: ubuntu-latest env: CARGO_INCREMENTAL: 0 RUST_BACKTRACE: full steps: - uses: actions/checkout@v2 - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - run: rustup component add rustfmt - name: Show env vars run: | echo "ZEBRA_SKIP_NETWORK_TESTS=${{ env.ZEBRA_SKIP_NETWORK_TESTS }}" echo "CARGO_INCREMENTAL=${{ env.CARGO_INCREMENTAL }}" echo "RUST_BACKTRACE=${{ env.RUST_BACKTRACE }}" - uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check