1- aliases :
2- - &update-npm
3- name : Update npm to the latest version
4- command : sudo npm install -g npm@latest
1+ version : 2.1
52
6- - &save-dependencies-cache
7- key : v1-dependency-cache-{{ checksum "package.json" }}
8- paths :
9- - ./node_modules
3+ executors :
4+ node :
5+ docker :
6+ - image : circleci/node:11.10.0
7+ working_directory : ~/ERC777
108
11- - &restore-dependencies-cache
12- keys :
13- - v1-dependency-cache-{{ checksum "package.json" }}
14- - v1-dependency-cache-
15-
16- - &save-build-cache
17- key : v1-build-cache-{{ .BuildNum }}
18- paths :
19- - ./artifacts
20-
21- - &restore-build-cache
22- keys :
23- - v1-build-cache-{{ .BuildNum }}
24- - v1-build-cache-
25- - &filter-all-tags
26- tags :
27- only : /.*/
9+ commands :
10+ restore-dependencies :
11+ steps :
12+ - restore_cache :
13+ keys :
14+ - v1-dependency-cache-{{ checksum "package.json" }}
15+ - v1-dependency-cache-
2816
29- defaults : &defaults
30- docker :
31- - image : circleci/node:10.6.0
32- working_directory : ~/erc777
17+ restore-build :
18+ steps :
19+ - restore_cache :
20+ keys :
21+ - v1-build-cache-{{ .BuildNum }}
22+ - v1-build-cache-
3323
34- version : 2
24+ restore-solc :
25+ steps :
26+ - run :
27+ name : Set write permissions
28+ command : sudo chmod go+w /opt
29+ - restore_cache :
30+ keys :
31+ - v1-solc-cache-{{ .BuildNum }}
32+ - v1-solc-cache-
33+ - run :
34+ name : Update $PATH
35+ command : echo 'export PATH="/opt:$PATH"' >> $BASH_ENV
3536
3637jobs :
37- install-dependencies :
38- << : *defaults
38+ install solc :
39+ executor : node
40+ steps :
41+ - run :
42+ name : Download solc
43+ command : curl -L "https://github.com/ethereum/solidity/releases/download/v0.5.3/solc-static-linux" -o /tmp/solc
44+ - run :
45+ name : Verify solc download
46+ command : echo "be08eb95cb3a1da52e918cf51a0c0397fbe7f0693145eb31835bf2924209f1e0 /tmp/solc" | sha256sum -c -
47+ - run :
48+ name : Make solc executable
49+ command : chmod +x /tmp/solc
50+ - run :
51+ name : Install solc
52+ command : sudo mv /tmp/solc /opt/solc
53+ - save_cache :
54+ key : v1-solc-cache-{{ .BuildNum }}
55+ paths :
56+ - /opt/solc
57+ - run :
58+ name : Solc version
59+ command : /opt/solc --version
60+
61+ install dependencies :
62+ executor : node
3963 steps :
40- - run : *update-npm
4164 - checkout
4265 - run :
4366 name : Install npm dependencies with npm ci
4467 command : npm ci
45- - save_cache : *save-dependencies-cache
68+ - save_cache :
69+ key : v1-dependency-cache-{{ checksum "package.json" }}
70+ paths :
71+ - ./node_modules
72+
4673 build :
47- << : *defaults
74+ executor : node
4875 steps :
49- - run : *update-npm
5076 - checkout
51- - restore_cache : *restore-dependencies-cache
77+ - restore-solc
78+ - restore-dependencies
5279 - run :
5380 name : Build Solidity
5481 command : npm run build
55- - save_cache : *save-build-cache
56- lint-solidity :
57- << : *defaults
82+ - save_cache :
83+ key : v1-build-cache-{{ .BuildNum }}
84+ paths :
85+ - ./artifacts
86+
87+ lint solidity :
88+ executor : node
5889 steps :
5990 - checkout
60- - restore_cache : * restore-dependencies-cache
91+ - restore-dependencies
6192 - run :
6293 name : Lint Solidity
6394 command : npm run lint:sol
64- lint-javascript :
65- << : *defaults
66- steps :
67- - run : *update-npm
68- - checkout
69- - restore_cache : *restore-dependencies-cache
70- - run :
71- name : Lint Javascript
72- command : npm run lint:js
95+
7396 test :
74- << : *defaults
97+ executor : node
7598 steps :
76- - run : *update-npm
7799 - checkout
78- - restore_cache : *restore-dependencies-cache
79- - restore_cache : *restore-build-cache
100+ - restore-dependencies
101+ - restore-build
102+ - restore-solc
80103 - run :
81104 name : Test
82105 command : npm run test
106+
83107 coverage :
84- << : *defaults
108+ executor : node
85109 steps :
86- - run : *update-npm
87110 - checkout
88- - restore_cache : *restore-dependencies-cache
89- - restore_cache : *restore-build-cache
111+ - restore-dependencies
112+ - restore-build
113+ - restore-solc
90114 - run :
91115 name : Tests with coverage
92116 command : npm run coverage
@@ -99,13 +123,17 @@ jobs:
99123 - run :
100124 name : Enforce minimum coverage threshold
101125 command : npx istanbul check-coverage --statements 95 --functions 95 --branches 95 --lines 95
126+
102127 publish :
103- << : *defaults
128+ executor : node
104129 steps :
105- - run : *update-npm
106130 - checkout
107- - restore_cache : *restore-dependencies-cache
108- - restore_cache : *restore-build-cache
131+ - run :
132+ name : Verify branch & version tag
133+ command : .circleci/deploy-check.sh
134+ - restore-dependencies
135+ - restore-build
136+ - restore-solc
109137 - run :
110138 name : Set npm auth token
111139 command : echo "//registry.npmjs.org/:_authToken=$NPM_TOKEN" >> ~/.npmrc
@@ -117,37 +145,26 @@ workflows:
117145 version : 2
118146 ci_cd :
119147 jobs :
120- - install-dependencies :
121- filters : *filter-all-tags
148+ - install solc
149+ - install dependencies
122150 - build :
123151 requires :
124- - install-dependencies
125- filters : *filter-all-tags
126- - lint-solidity :
127- requires :
128- - install-dependencies
129- filters : *filter-all-tags
130- - lint-javascript :
152+ - install solc
153+ - install dependencies
154+ - lint solidity :
131155 requires :
132- - install-dependencies
133- filters : *filter-all-tags
156+ - install dependencies
134157 - test :
135158 requires :
159+ - lint solidity
136160 - build
137- filters : *filter-all-tags
138161 - coverage :
139162 requires :
163+ - lint solidity
140164 - build
141- filters : *filter-all-tags
142165 - publish :
143166 requires :
144- - build
145167 - test
146- - coverage
147- - lint-solidity
148- - lint-javascript
149168 filters :
150- tags :
151- only : /v[0-9]+(\.[0-9]+)*/
152169 branches :
153- ignore : /.*/
170+ only : master
0 commit comments