eth2.0-specs/.circleci/config.yml

231 lines
7.1 KiB
YAML
Raw Normal View History

2019-03-27 16:35:46 +00:00
version: 2.1
commands:
restore_cached_venv:
2019-05-27 10:11:15 +00:00
description: "Restore a cached venv"
parameters:
reqs_checksum:
type: string
default: "1234"
venv_name:
type: string
default: "default-name"
steps:
- restore_cache:
keys:
- << parameters.venv_name >>-venv-<< parameters.reqs_checksum >>
# fallback to using the latest cache if no exact match is found
- << parameters.venv_name >>-venv-
save_cached_venv:
2019-05-27 10:11:15 +00:00
description: "Save a venv into a cache"
parameters:
reqs_checksum:
type: string
default: "1234"
venv_path:
type: string
default: "venv"
venv_name:
type: string
default: "default-name"
steps:
- save_cache:
key: << parameters.venv_name >>-venv-<< parameters.reqs_checksum >>
paths: << parameters.venv_path >>
2019-06-07 19:30:27 +00:00
restore_pyspec_cached_venv:
description: "Restore the cache with pyspec keys"
2019-05-27 09:39:50 +00:00
steps:
- restore_cached_venv:
2020-07-02 05:45:20 +00:00
venv_name: v22-pyspec
reqs_checksum: cache-{{ checksum "setup.py" }}
2019-06-07 19:30:27 +00:00
save_pyspec_cached_venv:
description: Save a venv into a cache with pyspec keys"
2019-05-27 10:11:15 +00:00
steps:
- save_cached_venv:
2020-07-02 05:45:20 +00:00
venv_name: v22-pyspec
reqs_checksum: cache-{{ checksum "setup.py" }}
venv_path: ./venv
restore_deposit_contract_tester_cached_venv:
description: "Restore the venv from cache for the deposit contract tester"
steps:
- restore_cached_venv:
venv_name: v23-deposit-contract-tester
reqs_checksum: cache-{{ checksum "setup.py" }}-{{ checksum "solidity_deposit_contract/web3_tester/requirements.txt" }}
save_deposit_contract_tester_cached_venv:
description: "Save the venv to cache for later use of the deposit contract tester"
steps:
- save_cached_venv:
venv_name: v23-deposit-contract-tester
reqs_checksum: cache-{{ checksum "setup.py" }}-{{ checksum "solidity_deposit_contract/web3_tester/requirements.txt" }}
venv_path: ./solidity_deposit_contract/web3_tester/venv
2019-03-18 19:06:45 +00:00
jobs:
checkout_specs:
2019-03-18 19:06:45 +00:00
docker:
- image: circleci/python:3.8
working_directory: ~/specs-repo
2019-03-18 19:06:45 +00:00
steps:
2019-06-18 13:30:01 +00:00
# Restore git repo at point close to target branch/revision, to speed up checkout
- restore_cache:
keys:
- v3-specs-repo-{{ .Branch }}-{{ .Revision }}
- v3-specs-repo-{{ .Branch }}-
- v3-specs-repo-
2019-03-18 19:06:45 +00:00
- checkout
- run:
name: Clean up git repo to reduce cache size
command: git gc
# Save the git checkout as a cache, to make cloning next time faster.
- save_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
paths:
- ~/specs-repo
2019-06-07 19:30:27 +00:00
install_pyspec_test:
docker:
- image: circleci/python:3.8
working_directory: ~/specs-repo
steps:
- restore_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
2019-06-07 19:30:27 +00:00
- restore_pyspec_cached_venv
- run:
name: Install pyspec requirements
2019-06-07 19:30:27 +00:00
command: make install_test
- save_pyspec_cached_venv
test:
docker:
- image: circleci/python:3.8
working_directory: ~/specs-repo
steps:
- restore_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
2019-06-07 19:30:27 +00:00
- restore_pyspec_cached_venv
2019-03-18 19:06:45 +00:00
- run:
name: Run py-tests
command: make citest
- store_test_results:
path: tests/core/pyspec/test-reports
2019-12-10 16:38:37 +00:00
table_of_contents:
docker:
- image: circleci/node:10.16.3
working_directory: ~/specs-repo
steps:
2019-12-10 17:57:19 +00:00
- checkout
2019-12-10 16:38:37 +00:00
- run:
name: Check table of contents
2020-12-07 02:59:05 +00:00
command: sudo npm install -g doctoc@2 && make check_toc
2019-12-16 11:55:51 +00:00
codespell:
docker:
- image: circleci/python:3.8
2019-12-16 11:55:51 +00:00
working_directory: ~/specs-repo
steps:
- checkout
- run:
name: Check codespell
command: pip install 'codespell<3.0.0,>=2.0.0' --user && make codespell
2019-05-09 05:11:07 +00:00
lint:
docker:
- image: circleci/python:3.8
2019-05-09 05:11:07 +00:00
working_directory: ~/specs-repo
steps:
- restore_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
2019-06-07 19:30:27 +00:00
- restore_pyspec_cached_venv
2019-05-09 05:11:07 +00:00
- run:
name: Run linter for pyspec
2019-05-16 09:23:26 +00:00
command: make lint
- run:
name: Run linter for test generators
command: make lint_generators
build_deposit_contract:
docker:
- image: ethereum/solc:0.6.11-alpine
steps:
- checkout
- run:
name: Install build essentials
command: |
apk update
apk add git make
2019-06-07 19:30:27 +00:00
- run:
name: Compile the contract
command: |
make compile_deposit_contract
git diff --color --exit-code
- persist_to_workspace:
root: .
paths:
- ./solidity_deposit_contract/deposit_contract.json
- ./build/combined.json
- ./solidity_deposit_contract/lib
test_deposit_contract:
docker:
- image: nixorg/nix:circleci
steps:
- checkout
- restore_cache:
key: nix-store-test-v2
- attach_workspace:
at: /tmp/
- run:
name: Test the contract
command: |
mkdir build
cp -r /tmp/build/* build
cp -r /tmp/solidity_deposit_contract/lib/* ./solidity_deposit_contract/lib
cp -r /tmp/solidity_deposit_contract/deposit_contract.json ./solidity_deposit_contract/deposit_contract.json
nix-shell --command 'make test_deposit_contract' ./solidity_deposit_contract/shell.nix
- save_cache:
key: nix-store-test-v2
paths:
- /nix
install_deposit_contract_web3_tester:
docker:
- image: circleci/python:3.8
working_directory: ~/specs-repo
steps:
- restore_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
- restore_deposit_contract_tester_cached_venv
- run:
name: Install deposit contract tester requirements
command: make install_deposit_contract_web3_tester
- save_deposit_contract_tester_cached_venv
test_deposit_contract_web3_tests:
docker:
- image: circleci/python:3.8
working_directory: ~/specs-repo
steps:
- restore_cache:
key: v3-specs-repo-{{ .Branch }}-{{ .Revision }}
- restore_deposit_contract_tester_cached_venv
- run:
name: Run deposit contract test with web3.py
command: make test_deposit_contract_web3_tests
workflows:
version: 2.1
test_spec:
jobs:
- checkout_specs
2019-06-07 19:30:27 +00:00
- install_pyspec_test:
requires:
- checkout_specs
- test:
requires:
2019-06-07 19:30:27 +00:00
- install_pyspec_test
2019-12-10 17:57:19 +00:00
- table_of_contents
2019-12-16 11:55:51 +00:00
- codespell
2019-05-16 09:23:26 +00:00
- lint:
requires:
2019-05-16 10:20:20 +00:00
- test
- install_deposit_contract_web3_tester:
requires:
- checkout_specs
- test_deposit_contract_web3_tests:
requires:
- install_deposit_contract_web3_tester
build_and_test_deposit_contract:
jobs:
- build_deposit_contract
- test_deposit_contract:
requires:
- build_deposit_contract