name: CI on: push: branches: [ main ] pull_request: branches: [ main, debugger ] env: CARGO_TERM_COLOR: always jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: 'recursive' - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-build-${{ hashFiles('Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-build- ${{ runner.os }}-cargo - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ mdBook/target key: ${{ runner.os }}-cargo-mdBook-${{ hashFiles('mdBook/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-mdBook- ${{ runner.os }}-cargo- # Checks are ordered from fastest to slowest so your build fails quickly on invalid PRs # We do everything in release mode so tests run quickly and steps cache each other. # Check the submitted change meets style guidelines - name: Cargo Format run: cargo fmt --check # Build and run the tests - name: Build and run tests run: cargo test --workspace --verbose --release - name: Verify examples outside of workspace (allowlist_zkp) run: cargo test --workspace --verbose working-directory: ./examples/allowlist_zkp - name: Build sunscreen and bincode run: cargo build --release --features bulletproofs --package sunscreen --package bincode - name: Build mdBook run: cargo build --release working-directory: ./mdBook - name: Test docs run: ../mdBook/target/release/mdbook test -L dependency=../target/release/deps --extern sunscreen=../target/release/libsunscreen.rlib --extern bincode=../target/release/libbincode.rlib working-directory: ./sunscreen_docs lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: 'recursive' - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-clippy-${{ hashFiles('Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-clippy- ${{ runner.os }}-cargo- # Check the submitted change passes the clippy linter - name: Cargo clippy run: cargo clippy --release --all-targets -- --deny warnings api_docs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 with: submodules: 'recursive' - uses: actions/cache@v3 with: path: | ~/.cargo/bin/ ~/.cargo/registry/index/ ~/.cargo/registry/cache/ ~/.cargo/git/db/ target/ key: ${{ runner.os }}-cargo-doc-${{ hashFiles('**/Cargo.lock') }} restore-keys: | ${{ runner.os }}-cargo-doc- ${{ runner.os }}-cargo- # Cursory check to ensure your CL contains valid Rust code - name: Cargo check run: cargo check --release # Check the documentation builds, links work, etc. - name: Cargo doc env: RUSTDOCFLAGS: -D warnings run: cargo doc --release --no-deps