config.yml
1 version: 2.1 2 3 parameters: 4 medium: 5 type: string 6 default: medium 7 large: 8 type: string 9 default: large 10 xlarge: 11 type: string 12 default: xlarge 13 14 executors: 15 rust-docker: 16 docker: 17 - image: cimg/rust:1.88.0 18 resource_class: << pipeline.parameters.xlarge >> 19 20 commands: 21 checkout_all_repos: 22 description: "Checkout adnet and all dependent repositories" 23 steps: 24 - checkout: 25 path: ~/project/adnet 26 - run: 27 name: Clone alphavm 28 command: | 29 git clone --depth 1 git@github.com:BlockBlox-MD/alphavm.git ~/project/alphavm 30 - run: 31 name: Clone deltavm 32 command: | 33 git clone --depth 1 git@github.com:BlockBlox-MD/deltavm.git ~/project/deltavm 34 - run: 35 name: Clone adnet-core 36 command: | 37 git clone --depth 1 git@github.com:BlockBlox-MD/adnet-core.git ~/project/adnet-core 38 39 setup_environment: 40 description: "Setup testing environment" 41 parameters: 42 cache_key: 43 type: string 44 default: v1.1.0-rust-1.88.0-adnet-cache 45 steps: 46 - run: 47 name: Install Debian packages 48 command: | 49 DEBIAN_FRONTEND=noninteractive sudo apt-get update 50 DEBIAN_FRONTEND=noninteractive sudo apt-get install -y --no-install-recommends clang llvm-dev llvm pkg-config libssl-dev 51 - restore_cache: 52 keys: 53 - << parameters.cache_key >>-{{ checksum "~/project/adnet/Cargo.lock" }} 54 - << parameters.cache_key >> 55 56 clear_environment: 57 description: "Clear environment" 58 parameters: 59 cache_key: 60 type: string 61 default: v1.1.0-rust-1.88.0-adnet-cache 62 steps: 63 - save_cache: 64 key: << parameters.cache_key >>-{{ checksum "~/project/adnet/Cargo.lock" }} 65 paths: 66 - ~/.cargo/registry 67 - ~/.cargo/git 68 - ~/project/adnet/target 69 70 install_rust_nightly: 71 description: "Install Rust nightly toolchain" 72 steps: 73 - run: rustup toolchain install nightly-x86_64-unknown-linux-gnu 74 75 jobs: 76 check-fmt: 77 executor: rust-docker 78 resource_class: << pipeline.parameters.medium >> 79 steps: 80 - add_ssh_keys: 81 fingerprints: 82 - "SHA256:CircleCIDeployKey" # Add your deploy key fingerprint 83 - checkout_all_repos 84 - install_rust_nightly 85 - setup_environment: 86 cache_key: v1.1.0-rust-1.88.0-adnet-fmt-cache 87 - run: 88 name: Check style 89 working_directory: ~/project/adnet 90 command: cargo +nightly fmt --all -- --check 91 - clear_environment: 92 cache_key: v1.1.0-rust-1.88.0-adnet-fmt-cache 93 94 check-clippy: 95 executor: rust-docker 96 resource_class: << pipeline.parameters.medium >> 97 steps: 98 - add_ssh_keys: 99 fingerprints: 100 - "SHA256:CircleCIDeployKey" # Add your deploy key fingerprint 101 - checkout_all_repos 102 - setup_environment: 103 cache_key: v1.1.0-rust-1.88.0-adnet-clippy-cache 104 - run: 105 name: Check Clippy 106 working_directory: ~/project/adnet 107 command: cargo clippy --workspace --all-targets -- -D warnings 108 - clear_environment: 109 cache_key: v1.1.0-rust-1.88.0-adnet-clippy-cache 110 111 test-all: 112 executor: rust-docker 113 steps: 114 - add_ssh_keys: 115 fingerprints: 116 - "SHA256:CircleCIDeployKey" # Add your deploy key fingerprint 117 - checkout_all_repos 118 - setup_environment 119 - run: 120 name: Test all packages 121 working_directory: ~/project/adnet 122 no_output_timeout: 20m 123 command: cargo test --workspace 124 - clear_environment 125 126 build-release: 127 executor: rust-docker 128 steps: 129 - add_ssh_keys: 130 fingerprints: 131 - "SHA256:CircleCIDeployKey" # Add your deploy key fingerprint 132 - checkout_all_repos 133 - setup_environment: 134 cache_key: v1.1.0-rust-1.88.0-adnet-release-cache 135 - run: 136 name: Build release binary 137 working_directory: ~/project/adnet 138 no_output_timeout: 30m 139 command: cargo build --release 140 - clear_environment: 141 cache_key: v1.1.0-rust-1.88.0-adnet-release-cache 142 143 workflows: 144 version: 2 145 146 quality-workflow: 147 jobs: 148 - check-fmt 149 - check-clippy 150 151 test-workflow: 152 jobs: 153 - test-all 154 155 build-workflow: 156 jobs: 157 - build-release