mirror of
https://github.com/ProvableHQ/leo.git
synced 2024-11-22 22:44:47 +03:00
289 lines
8.2 KiB
YAML
289 lines
8.2 KiB
YAML
version: 2.1
|
|
commands:
|
|
setup_environment:
|
|
description: "Setup environment"
|
|
parameters:
|
|
cache_key:
|
|
type: string
|
|
default: leo-stable-linux-cache
|
|
steps:
|
|
- run: set -e
|
|
- setup_remote_docker
|
|
- run:
|
|
name: Prepare environment and install dependencies
|
|
command: |
|
|
export SCCACHE_CACHE_SIZE=200M
|
|
export WORK_DIR="$CIRCLE_WORKING_DIRECTORY/.cache/sccache"
|
|
export SCCACHE_DIR="$CIRCLE_WORKING_DIRECTORY/.cache/sccache"
|
|
mkdir -p "$CIRCLE_WORKING_DIRECTORY/.bin"
|
|
wget https://github.com/mozilla/sccache/releases/download/0.2.13/sccache-0.2.13-x86_64-unknown-linux-musl.tar.gz
|
|
tar -C "$CIRCLE_WORKING_DIRECTORY/.bin" -xvf sccache-0.2.13-x86_64-unknown-linux-musl.tar.gz
|
|
mv $CIRCLE_WORKING_DIRECTORY/.bin/sccache-0.2.13-x86_64-unknown-linux-musl/sccache $CIRCLE_WORKING_DIRECTORY/.bin/sccache
|
|
export PATH="$PATH:$CIRCLE_WORKING_DIRECTORY/.bin"
|
|
export RUSTC_WRAPPER="sccache"
|
|
rm -rf "$CIRCLE_WORKING_DIRECTORY/.cargo/registry"
|
|
sudo apt-get update && sudo apt-get install -y clang llvm-dev llvm pkg-config xz-utils make libssl-dev libssl-dev
|
|
- restore_cache:
|
|
keys:
|
|
- << parameters.cache_key >>
|
|
clear_environment:
|
|
description: "Clear environment"
|
|
parameters:
|
|
cache_key:
|
|
type: string
|
|
default: leo-stable-linux-cache
|
|
steps:
|
|
- run: (sccache -s||true)
|
|
- run: set +e
|
|
- save_cache:
|
|
key: << parameters.cache_key >>
|
|
paths:
|
|
- .cache/sccache
|
|
- .cargo
|
|
# orbs:
|
|
# codecov: codecov/codecov@1.2.3
|
|
|
|
jobs:
|
|
check-style:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- checkout
|
|
- setup_environment:
|
|
cache_key: leo-fmt-cache
|
|
- run:
|
|
name: Check style
|
|
no_output_timeout: 35m
|
|
command: cargo fmt --all -- --check
|
|
- clear_environment:
|
|
cache_key: leo-fmt-cache
|
|
|
|
clippy:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- checkout
|
|
- setup_environment:
|
|
cache_key: leo-clippy-cache
|
|
- run:
|
|
name: Clippy
|
|
no_output_timeout: 35m
|
|
command: cargo clippy --all-features --examples --all --benches
|
|
- clear_environment:
|
|
cache_key: leo-clippy-cache
|
|
|
|
# code-cov:
|
|
# docker:
|
|
# - image: cimg/rust:1.54.0
|
|
# resource_class: xlarge
|
|
# environment:
|
|
# RUSTC_BOOTSTRAP: 1
|
|
# steps:
|
|
# - checkout
|
|
# - setup_environment:
|
|
# cache_key: leo-codecov-cache
|
|
# - run:
|
|
# name: Build and run tests
|
|
# no_output_timeout: 30m
|
|
# command: cargo test --all
|
|
# - run:
|
|
# name: Install Code Cov Deps
|
|
# no_output_timeout: 30m
|
|
# command: |
|
|
# sudo apt-get update
|
|
# sudo apt-get -y install binutils-dev libcurl4-openssl-dev zlib1g-dev libdw-dev libiberty-dev
|
|
# - run:
|
|
# name: Generate Coverage Report
|
|
# no_output_timeout: 30m
|
|
# command: |
|
|
# wget https://github.com/SimonKagstrom/kcov/archive/master.tar.gz
|
|
# tar xzf master.tar.gz
|
|
# cd kcov-master
|
|
# mkdir build && cd build
|
|
# cmake .. && make
|
|
# make install DESTDIR=../../kcov-build
|
|
# cd ../..
|
|
# rm -rf kcov-master
|
|
# for file in target/debug/deps/*-*; do if [[ "$file" != *\.* ]]; then mkdir -p "target/cov/$(basename $file)"; ./kcov-build/usr/local/bin/kcov --exclude-pattern=/.cargo,/usr/lib --exclude-region='@kcov_skip(start):@kcov_skip(end)' --verify "target/cov/$(basename $file)" "$file"; fi done
|
|
# steps:
|
|
# - codecov/upload:
|
|
# file: {{}}
|
|
# - persist_to_workspace:
|
|
# root: ~/
|
|
# paths: project/
|
|
# - clear_environment:
|
|
# cache_key: leo-codecov-cache
|
|
|
|
leo-executable:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- checkout
|
|
- setup_environment:
|
|
cache_key: leo-executable-cache
|
|
- run:
|
|
name: Build and install Leo
|
|
no_output_timeout: 30m
|
|
command: cargo install --path . --root . --locked
|
|
- persist_to_workspace:
|
|
root: ~/
|
|
paths: project/
|
|
- clear_environment:
|
|
cache_key: leo-executable-cache
|
|
|
|
leo-new:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo new
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-new.sh
|
|
|
|
leo-init:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo init
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-init.sh
|
|
|
|
leo-clean:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo clean
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-clean.sh
|
|
|
|
leo-setup:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo setup
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-setup.sh
|
|
|
|
# leo-add-remove:
|
|
# docker:
|
|
# - image: cimg/rust:1.54.0
|
|
# resource_class: xlarge
|
|
# steps:
|
|
# - attach_workspace:
|
|
# at: /home/circleci/project/
|
|
# - run:
|
|
# name: leo add & remove
|
|
# command: |
|
|
# export LEO=/home/circleci/project/project/bin/leo
|
|
# ./project/.circleci/leo-add-remove.sh
|
|
|
|
# todo (collin): uncomment after compiler refactor
|
|
# leo-check-constraints:
|
|
# docker:
|
|
# - image: cimg/rust:1.54.0
|
|
# resource_class: xlarge
|
|
# steps:
|
|
# - attach_workspace:
|
|
# at: /home/circleci/project/
|
|
# - run:
|
|
# name: leo check constraints for Pedersen Hash
|
|
# command: |
|
|
# export LEO=/home/circleci/project/project/bin/leo
|
|
# ./project/.circleci/leo-check-constraints.sh
|
|
|
|
leo-login-logout:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo login & logout
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-login-logout.sh
|
|
|
|
leo-clone:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo clone
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-clone.sh
|
|
|
|
leo-publish:
|
|
docker:
|
|
- image: cimg/rust:1.54.0
|
|
resource_class: xlarge
|
|
steps:
|
|
- attach_workspace:
|
|
at: /home/circleci/project/
|
|
- run:
|
|
name: leo publish
|
|
command: |
|
|
export LEO=/home/circleci/project/project/bin/leo
|
|
./project/.circleci/leo-publish.sh
|
|
|
|
workflows:
|
|
version: 2
|
|
main-workflow:
|
|
jobs:
|
|
- check-style
|
|
- clippy
|
|
- leo-executable
|
|
- leo-new:
|
|
requires:
|
|
- leo-executable
|
|
- leo-init:
|
|
requires:
|
|
- leo-executable
|
|
- leo-clean:
|
|
requires:
|
|
- leo-executable
|
|
- leo-setup:
|
|
requires:
|
|
- leo-executable
|
|
# - leo-add-remove:
|
|
# requires:
|
|
# - leo-executable
|
|
# - leo-check-constraints:
|
|
# requires:
|
|
# - leo-executable
|
|
- leo-login-logout:
|
|
requires:
|
|
- leo-executable
|
|
- leo-clone:
|
|
requires:
|
|
- leo-executable
|
|
- leo-publish:
|
|
requires:
|
|
- leo-executable
|