version: 2 jobs: build: docker: - image: rustlang/rust:nightly-slim steps: - checkout - run: name: Version information command: rustc --version; cargo --version; rustup --version - run: name: Calculate dependencies command: cargo generate-lockfile - restore_cache: keys: - v4-cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }} - run: name: Build libsnark command: LIBSNARK_SOURCE_PATH=$HOME/libsnark ./build_libsnark.sh - run: name: Build command: WITH_LIBSNARK=1 LIBSNARK_SOURCE_PATH=$HOME/libsnark RUSTFLAGS="-D warnings" ./build.sh - save_cache: paths: - /usr/local/cargo/registry - target/debug/.fingerprint - target/debug/build - target/debug/deps key: v4-cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }} test: docker: - image: rustlang/rust:nightly-slim steps: - checkout - run: name: Version information command: rustc --version; cargo --version; rustup --version - run: name: Calculate dependencies command: cargo generate-lockfile - restore_cache: keys: - v4-cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }} - run: name: Check format command: rustup component add rustfmt-preview; cargo fmt --all -- --check - run: name: Build libsnark command: LIBSNARK_SOURCE_PATH=$HOME/libsnark ./build_libsnark.sh - run: name: Build command: WITH_LIBSNARK=1 LIBSNARK_SOURCE_PATH=$HOME/libsnark RUSTFLAGS="-D warnings" ./build.sh - run: name: Run tests command: WITH_LIBSNARK=1 LIBSNARK_SOURCE_PATH=$HOME/libsnark RUSTFLAGS="-D warnings" cargo test --release -- --test-threads=1 - run: name: Generate code coverage report command: ./scripts/cov.sh wasm_test: docker: - image: rustlang/rust:nightly-slim steps: - checkout - run: name: Version information command: rustc --version; cargo --version; rustup --version - run: name: Calculate dependencies command: cargo generate-lockfile - restore_cache: keys: - v4-cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }} - run: name: Download wasm32 target command: rustup target add wasm32-unknown-unknown - run: name: Run tests with WASM enabled command: cd zokrates_core && cargo test --release --features wasm -- --test-threads=1 integration_test: docker: - image: rustlang/rust:nightly-slim steps: - checkout - run: name: Version information command: rustc --version; cargo --version; rustup --version - run: name: Calculate dependencies command: cargo generate-lockfile - restore_cache: keys: - v4-cargo-cache-{{ arch }}-{{ checksum "Cargo.lock" }} - run: name: Build libsnark command: LIBSNARK_SOURCE_PATH=$HOME/libsnark ./build_libsnark.sh - run: name: Run integration tests command: WITH_LIBSNARK=1 LIBSNARK_SOURCE_PATH=$HOME/libsnark RUSTFLAGS="-D warnings" cargo test --release -- --ignored deploy: docker: - image: circleci/python steps: - checkout - setup_remote_docker: docker_layer_caching: true - run: name: Release command: ./scripts/release.sh workflows: version: 2 build-test-and-deploy: jobs: - build - test - wasm_test - integration_test - deploy: filters: branches: only: - master requires: - build - test - integration_test