name: CI checks on: [push, pull_request] jobs: lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: 1.44.1 override: true # cargo fmt does not build the code, and running it in a fresh clone of # the codebase will fail because the protobuf code has not been generated. - name: cargo build uses: actions-rs/cargo@v1 with: command: build args: --all # Ensure all code has been formatted with rustfmt - run: rustup component add rustfmt - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check --color always # Build benchmarks to prevent bitrot - name: Build benchmarks uses: actions-rs/cargo@v1 with: command: build args: --all --benches test: name: Test on ${{ matrix.os }} runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest, windows-latest, macOS-latest] steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: 1.44.1 override: true - name: Fetch path to Zcash parameters working-directory: ./zcash_proofs run: echo "::set-env name=ZCASH_PARAMS::$(cargo run --release --example get-params-path --features directories)" - name: Cache Zcash parameters id: cache-params uses: actions/cache@v2 with: path: ${{ env.ZCASH_PARAMS }} key: ${{ runner.os }}-params - name: Fetch Zcash parameters if: steps.cache-params.outputs.cache-hit != 'true' working-directory: ./zcash_proofs run: cargo run --release --example download-params --features download-params - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch - name: Build tests uses: actions-rs/cargo@v1 with: command: build args: --verbose --release --all --tests - name: Run tests uses: actions-rs/cargo@v1 with: command: test args: --verbose --release --all - name: Run slow tests uses: actions-rs/cargo@v1 with: command: test args: --verbose --release --all -- --ignored build: name: Build target ${{ matrix.target }} runs-on: ubuntu-latest strategy: matrix: target: - wasm32-unknown-unknown - wasm32-wasi steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: 1.44.1 override: true - name: Add target run: rustup target add ${{ matrix.target }} - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch - name: Build zcash_proofs for target working-directory: ./zcash_proofs run: cargo build --verbose --no-default-features --target ${{ matrix.target }} codecov: name: Code coverage runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 # Use stable for this to ensure that cargo-tarpaulin can be built. - uses: actions-rs/toolchain@v1 with: toolchain: stable override: true - name: Install cargo-tarpaulin uses: actions-rs/cargo@v1 with: command: install args: cargo-tarpaulin - name: Fetch path to Zcash parameters working-directory: ./zcash_proofs run: echo "::set-env name=ZCASH_PARAMS::$(cargo run --release --example get-params-path --features directories)" - name: Cache Zcash parameters id: cache-params uses: actions/cache@v2 with: path: ${{ env.ZCASH_PARAMS }} key: ${{ runner.os }}-params - name: Fetch Zcash parameters if: steps.cache-params.outputs.cache-hit != 'true' working-directory: ./zcash_proofs run: cargo run --release --example download-params --features download-params - name: Generate coverage report uses: actions-rs/cargo@v1 with: command: tarpaulin args: --release --timeout 600 --out Xml - name: Upload coverage to Codecov uses: codecov/codecov-action@v1.0.3 with: token: ${{secrets.CODECOV_TOKEN}} doc-links: name: Nightly lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v1 - uses: actions-rs/toolchain@v1 with: toolchain: nightly override: true - name: cargo fetch uses: actions-rs/cargo@v1 with: command: fetch # Ensure intra-documentation links all resolve correctly # Requires #![deny(intra_doc_link_resolution_failure)] in crates. - name: Check intra-doc links uses: actions-rs/cargo@v1 with: command: doc args: --all --document-private-items