Skip to content

Commit 5d7f0bd

Browse files
committed
CI: separate job for building the tarball to be published and tested
1 parent 09b2c15 commit 5d7f0bd

File tree

1 file changed

+75
-36
lines changed

1 file changed

+75
-36
lines changed

.circleci/config.yml

Lines changed: 75 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
defaults:
2+
- requires_package: &requires_package
3+
requires:
4+
- build-package
5+
16
workflows:
27
version: 2.1
38
node-multi-build:
@@ -11,11 +16,12 @@ workflows:
1116
- node-v20
1217
- node-current:
1318
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
1925
- solidity-solcjs-ext-test
2026

2127
version: 2.1
@@ -104,7 +110,7 @@ commands:
104110
default: .
105111
tarball-path:
106112
type: string
107-
default: solc-js.tgz
113+
default: workspace/solc-js.tgz
108114
package-manager:
109115
type: enum
110116
enum: ["npm", "yarn", "pnpm"]
@@ -146,21 +152,6 @@ commands:
146152
exit 1
147153
fi
148154
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-
164155
provision-hardhat-with-packaged-solcjs:
165156
description: "Clones Hardhat repository and configures it to use a local clone of solc-js."
166157
steps:
@@ -229,14 +220,47 @@ jobs:
229220
./node_modules
230221
./dist
231222
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+
232255
hardhat-core-default-solc:
233256
# Runs out of memory on 'medium'.
234257
resource_class: medium+
235258
docker:
236259
- image: cimg/node:current
237260
steps:
238261
- show-npm-version
239-
- provision-and-package-solcjs
262+
- attach_workspace:
263+
at: workspace
240264
- provision-hardhat-with-packaged-solcjs
241265
- run:
242266
name: Restore the default solc binary expected by Hardhat
@@ -264,7 +288,8 @@ jobs:
264288
- image: cimg/node:current
265289
steps:
266290
- show-npm-version
267-
- provision-and-package-solcjs
291+
- attach_workspace:
292+
at: workspace
268293
- provision-hardhat-with-packaged-solcjs
269294
- run:
270295
name: Run hardhat-core test suite with latest solc
@@ -283,7 +308,8 @@ jobs:
283308
- image: cimg/node:current
284309
steps:
285310
- show-npm-version
286-
- provision-and-package-solcjs
311+
- attach_workspace:
312+
at: workspace
287313
- run: git clone --depth 1 "https://github.com/nomiclabs/hardhat-hackathon-boilerplate" boilerplate/
288314
- run:
289315
# Leaving package-lock.json causes a weird error in arborist when npm is used again after
@@ -337,7 +363,8 @@ jobs:
337363
steps:
338364
- update-npm
339365
- show-npm-version
340-
- provision-and-package-solcjs
366+
- attach_workspace:
367+
at: workspace
341368
- run: sudo apt update
342369
- run: sudo apt install python3 python-is-python3 --assume-yes --no-install-recommends
343370
- provision-truffle-with-packaged-solcjs
@@ -369,28 +396,40 @@ jobs:
369396
- image: cimg/node:current
370397
steps:
371398
- 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
382401
- run:
383402
name: "CLI smoke test (package)"
384403
command: |
385404
mkdir package/
386405
cd package/
387-
npm install ../solc-js.tgz
406+
npm install ../workspace/solc-js.tgz
388407
389408
npx solcjs --version
390409
391410
echo "contract C {}" > C.sol
392411
npx solcjs C.sol --bin
393412
[[ -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 ]]
394433
395434
solidity-solcjs-ext-test:
396435
docker:

0 commit comments

Comments
 (0)