1
+ defaults :
2
+ - requires_package : &requires_package
3
+ requires :
4
+ - build-package
5
+
1
6
workflows :
2
7
version : 2.1
3
8
node-multi-build :
@@ -11,11 +16,12 @@ workflows:
11
16
- node-v20
12
17
- node-current :
13
18
run_coveralls : true
14
- - hardhat-core-default-solc
15
- - hardhat-core-latest-solc
16
- - hardhat-sample-project
17
- - truffle-sample-project
18
- - cli-smoke-test
19
+ - build-package
20
+ - hardhat-core-default-solc : *requires_package
21
+ - hardhat-core-latest-solc : *requires_package
22
+ - hardhat-sample-project : *requires_package
23
+ - truffle-sample-project : *requires_package
24
+ - cli-smoke-test : *requires_package
19
25
- solidity-solcjs-ext-test
20
26
21
27
version : 2.1
@@ -104,7 +110,7 @@ commands:
104
110
default : .
105
111
tarball-path :
106
112
type : string
107
- default : solc-js.tgz
113
+ default : workspace/ solc-js.tgz
108
114
package-manager :
109
115
type : enum
110
116
enum : ["npm", "yarn", "pnpm"]
@@ -146,21 +152,6 @@ commands:
146
152
exit 1
147
153
fi
148
154
149
- provision-and-package-solcjs :
150
- description : " Creates a package out of latest solc-js to test its installation as a dependency."
151
- steps :
152
- - checkout :
153
- path : solc-js/
154
- - install-dependencies :
155
- cache-id : solc-js
156
- path : solc-js
157
- - run :
158
- name : Package solc-js
159
- command : |
160
- cd solc-js/
161
- npm run build:tarball
162
- mv "$(npm run --silent tarballName)" ../solc-js.tgz
163
-
164
155
provision-hardhat-with-packaged-solcjs :
165
156
description : " Clones Hardhat repository and configures it to use a local clone of solc-js."
166
157
steps :
@@ -229,14 +220,47 @@ jobs:
229
220
./node_modules
230
221
./dist
231
222
223
+ build-package :
224
+ docker :
225
+ - image : cimg/node:current
226
+ steps :
227
+ - show-npm-version
228
+ - checkout :
229
+ path : solc-js/
230
+ - install-dependencies :
231
+ cache-id : solc-js
232
+ path : solc-js
233
+ - attach_workspace :
234
+ at : workspace
235
+ - run :
236
+ name : Package solc-js
237
+ command : |
238
+ cd solc-js/
239
+ npm run build:tarball
240
+
241
+ cp "$(npm run --silent tarballName)" ../workspace/solc-js.tgz
242
+
243
+ # The artifact is meant to be used with `npm publish` and that fails unless the file name includes a version number.
244
+ # Oddly, the name and version from the file name do not even need to be correct - after npm accepts the file,
245
+ # it will use the ones from package.json anyway.
246
+ mkdir ../artifacts
247
+ mv "$(npm run --silent tarballName)" ../artifacts/
248
+ - persist_to_workspace :
249
+ root : workspace
250
+ paths :
251
+ - solc-js.tgz
252
+ - store_artifacts :
253
+ path : artifacts/
254
+
232
255
hardhat-core-default-solc :
233
256
# Runs out of memory on 'medium'.
234
257
resource_class : medium+
235
258
docker :
236
259
- image : cimg/node:current
237
260
steps :
238
261
- show-npm-version
239
- - provision-and-package-solcjs
262
+ - attach_workspace :
263
+ at : workspace
240
264
- provision-hardhat-with-packaged-solcjs
241
265
- run :
242
266
name : Restore the default solc binary expected by Hardhat
@@ -264,7 +288,8 @@ jobs:
264
288
- image : cimg/node:current
265
289
steps :
266
290
- show-npm-version
267
- - provision-and-package-solcjs
291
+ - attach_workspace :
292
+ at : workspace
268
293
- provision-hardhat-with-packaged-solcjs
269
294
- run :
270
295
name : Run hardhat-core test suite with latest solc
@@ -283,7 +308,8 @@ jobs:
283
308
- image : cimg/node:current
284
309
steps :
285
310
- show-npm-version
286
- - provision-and-package-solcjs
311
+ - attach_workspace :
312
+ at : workspace
287
313
- run : git clone --depth 1 "https://github.com/nomiclabs/hardhat-hackathon-boilerplate" boilerplate/
288
314
- run :
289
315
# Leaving package-lock.json causes a weird error in arborist when npm is used again after
@@ -337,7 +363,8 @@ jobs:
337
363
steps :
338
364
- update-npm
339
365
- show-npm-version
340
- - provision-and-package-solcjs
366
+ - attach_workspace :
367
+ at : workspace
341
368
- run : sudo apt update
342
369
- run : sudo apt install python3 python-is-python3 --assume-yes --no-install-recommends
343
370
- provision-truffle-with-packaged-solcjs
@@ -369,28 +396,40 @@ jobs:
369
396
- image : cimg/node:current
370
397
steps :
371
398
- show-npm-version
372
- - provision-and-package-solcjs
373
- - run :
374
- name : " CLI smoke test (repository)"
375
- command : |
376
- cd solc-js
377
- dist/solc.js --version
378
-
379
- echo "contract C {}" > C.sol
380
- dist/solc.js C.sol --bin
381
- [[ -f C_sol_C.bin ]]
399
+ - attach_workspace :
400
+ at : workspace
382
401
- run :
383
402
name : " CLI smoke test (package)"
384
403
command : |
385
404
mkdir package/
386
405
cd package/
387
- npm install ../solc-js.tgz
406
+ npm install ../workspace/ solc-js.tgz
388
407
389
408
npx solcjs --version
390
409
391
410
echo "contract C {}" > C.sol
392
411
npx solcjs C.sol --bin
393
412
[[ -f C_sol_C.bin ]]
413
+ - checkout :
414
+ path : solc-js/
415
+ - install-dependencies :
416
+ cache-id : solc-js
417
+ path : solc-js
418
+ - run :
419
+ name : Build solc-js
420
+ command : |
421
+ cd solc-js/
422
+ npm run updateBinary
423
+ npm run build
424
+ - run :
425
+ name : " CLI smoke test (repository)"
426
+ command : |
427
+ cd solc-js
428
+ dist/solc.js --version
429
+
430
+ echo "contract C {}" > C.sol
431
+ dist/solc.js C.sol --bin
432
+ [[ -f C_sol_C.bin ]]
394
433
395
434
solidity-solcjs-ext-test :
396
435
docker :
0 commit comments