version: 2 jobs: build: docker: - image: zokrates/env:latest 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 command: ZOKRATES_HOME=$(pwd)/zokrates_stdlib/stdlib/ WITH_LIBSNARK=1 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: zokrates/env:latest 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 if rustfmt is available command: "! rustup component add rustfmt || cargo fmt --all -- --check" - run: name: Build command: ZOKRATES_HOME=$(pwd)/zokrates_stdlib/stdlib/ WITH_LIBSNARK=1 RUSTFLAGS="-D warnings" ./build.sh - run: name: Run tests command: ZOKRATES_HOME=$(pwd)/zokrates_stdlib/stdlib/ WITH_LIBSNARK=1 RUSTFLAGS="-D warnings" ./test.sh # - run: # name: Generate code coverage report # command: ./scripts/cov.sh cpp_format: docker: - image: zokrates/env:latest steps: - checkout - run: name: Check cpp format (clang-format) command: run-clang-format.py -r $(pwd)/zokrates_core/lib wasm_test: docker: - image: zokrates/env:latest 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: Test on firefox command: ZOKRATES_HOME=$(pwd)/zokrates_stdlib/stdlib/ cd zokrates_core && wasm-pack test --firefox --headless -- --features wasm integration_test: docker: - image: zokrates/env:latest - image: trufflesuite/ganache-cli:next port: 8545:8545 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: Run integration tests command: ZOKRATES_HOME=$(pwd)/zokrates_stdlib/stdlib/ WITH_LIBSNARK=1 RUSTFLAGS="-D warnings" ./full_test.sh deploy: docker: - image: circleci/python:latest-node steps: - checkout - setup_remote_docker: docker_layer_caching: true - run: name: Release command: ./scripts/release.sh zokrates_js_build: docker: - image: zokrates/env:latest steps: - checkout - run: name: Build command: cd zokrates_js && npm run build zokrates_js_test: docker: - image: dark64/zokrates-env:latest steps: - checkout - run: command: cd zokrates_js && npm run test workflows: version: 2 build-test-and-deploy: jobs: - build - test - cpp_format - wasm_test - integration_test - zokrates_js_build - zokrates_js_test - deploy: filters: branches: only: - master requires: - build - test - cpp_format - wasm_test - integration_test - zokrates_js_build - zokrates_js_test