11version : 2.1
2+
23orbs :
34 slack : circleci/slack@3.4.2
45
6162 name : Install dependencies
6263 command : bun install
6364 - run :
64- name : Build Etherpot Modular SDK
65+ name : Build Etherspot Modular SDK
6566 command : bun run build
6667 - run :
6768 name : Checkout e2e repo and run tests
@@ -88,11 +89,13 @@ jobs:
8889 sed -i.bak "s/secondary_wallet_address/$SECONDARY_WALLET_ADDRESS/g" .env
8990 sed -i.bak "s/paymaster_address/$PAYMASTER_ADDRESS/g" .env
9091 sed -i.bak "s/sponsor_address/$SPONSOR_ADDRESS/g" .env
92+
9193 mv package.json temp.json
9294 jq -r '.dependencies."@etherspot/modular-sdk" |= "file:../etherspot-modular-sdk"' temp.json > package.json
9395 rm temp.json
96+
9497 npm i
95- npm run test-all-chains
98+ npm run test-all-chains
9699 - store_artifacts :
97100 path : /home/circleci/e2e-sdk-modular/reports
98101 destination : test-report
@@ -107,6 +110,7 @@ jobs:
107110 echo "❌ Aggregated mochawesome report not found at $MOCHAWESOME_JSON_FILE"
108111 exit 0
109112 fi
113+
110114 TOTAL_SUITES=$(jq '.stats.suites' $MOCHAWESOME_JSON_FILE)
111115 TOTAL_PASSES=$(jq '.stats.passes' $MOCHAWESOME_JSON_FILE)
112116 TOTAL_PENDING=$(jq '.stats.pending' $MOCHAWESOME_JSON_FILE)
@@ -119,64 +123,125 @@ jobs:
119123 END_TIME_FORMATTED=$(date -d "$END_TIME" "+%Y-%m-%d %H:%M:%S")
120124 DURATION_MIN=$(awk "BEGIN {printf \"%.2f\",${DURATION_MS}/60000}")
121125
122-
123126 jq -r '.results[] | .suites[] | select(.failures > 0) | {suite: .title, tests: [.tests[] | select(.fail) | .title]} | select(.tests | length > 0) |
124127 "*Suite:* \(.suite)\n*Failing Tests:* \n\(.tests | map("- " + .) | join("\n"))\n"' $MOCHAWESOME_JSON_FILE > $FAILED_TESTS_FILE
125128
126129 if [ -s $FAILED_TESTS_FILE ]; then
127130 MESSAGE=$(cat $FAILED_TESTS_FILE)
128- SLACK_MESSAGE=":x: *E2E Tests Failed :x: *\n\
129- *Project:* ${CIRCLE_PROJECT_REPONAME}\n\
130- *Triggered by:* ${CIRCLE_USERNAME}\n\
131- *Branch:* ${CIRCLE_BRANCH}\n\
132- *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\n\
133- *Test Summary:*\n\
134- *Total Suites:* ${TOTAL_SUITES}\n\
135- *Passes:* ${TOTAL_PASSES}\n\
136- *Pending:* ${TOTAL_PENDING}\n\
137- *Failures:* ${TOTAL_FAILURES}\n\
138- *Start Time:* ${START_TIME_FORMATTED}\n\
139- *End Time:* ${END_TIME_FORMATTED}\n\
140- *Duration:* ${DURATION_MIN} minutes\n\n\
141- *Failed Tests:*\n${MESSAGE}\n\
142- *Report:* <https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/tmp/mochawesome-report/mochawesome.html|View HTML Report>\n\
143- *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>"
131+ SLACK_MESSAGE=":x: *E2E Tests Failed :x:*\n\
132+ *Project:* ${CIRCLE_PROJECT_REPONAME}\n\
133+ *Triggered by:* ${CIRCLE_USERNAME}\n\
134+ *Branch:* ${CIRCLE_BRANCH}\n\
135+ *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\n\
136+ *Test Summary:*\n\
137+ *Total Suites:* ${TOTAL_SUITES}\n\
138+ *Passes:* ${TOTAL_PASSES}\n\
139+ *Pending:* ${TOTAL_PENDING}\n\
140+ *Failures:* ${TOTAL_FAILURES}\n\
141+ *Start Time:* ${START_TIME_FORMATTED}\n\
142+ *End Time:* ${END_TIME_FORMATTED}\n\
143+ *Duration:* ${DURATION_MIN} minutes\n\n\
144+ *Failed Tests:*\n${MESSAGE}\n\
145+ *Report:* <https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/tmp/mochawesome-report/mochawesome.html|View HTML Report>\n\
146+ *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>"
144147 else
145- SLACK_MESSAGE=":white_check_mark: All E2E tests passed\n\
146- *Project:* ${CIRCLE_PROJECT_REPONAME}\n\
147- *Triggered by:* ${CIRCLE_USERNAME}\n\
148- *Branch:* ${CIRCLE_BRANCH}\n\
149- *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\
150- *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>\n\
151- *Report:* <https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/tmp/mochawesome-report/mochawesome.html|View HTML Report>\n\
152- \n *Test Summary:*\n\
153- *Total Suites:* ${TOTAL_SUITES}\n\
154- *Passes:* ${TOTAL_PASSES}\n\
155- *Pending:* ${TOTAL_PENDING}\n\
156- *Failures:* ${TOTAL_FAILURES}\n\
157- *Start Time:* ${START_TIME_FORMATTED}\n\
158- *End Time:* ${END_TIME_FORMATTED}\n\
159- *Duration:* ${DURATION_MIN} minutes"
148+ SLACK_MESSAGE=":white_check_mark: * All E2E tests passed!* \n\
149+ *Project:* ${CIRCLE_PROJECT_REPONAME}\n\
150+ *Triggered by:* ${CIRCLE_USERNAME}\n\
151+ *Branch:* ${CIRCLE_BRANCH}\n\
152+ *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\
153+ *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>\n\
154+ *Report:* <https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/tmp/mochawesome-report/mochawesome.html|View HTML Report>\n \n\
155+ *Test Summary:*\n\
156+ *Total Suites:* ${TOTAL_SUITES}\n\
157+ *Passes:* ${TOTAL_PASSES}\n\
158+ *Pending:* ${TOTAL_PENDING}\n\
159+ *Failures:* ${TOTAL_FAILURES}\n\
160+ *Start Time:* ${START_TIME_FORMATTED}\n\
161+ *End Time:* ${END_TIME_FORMATTED}\n\
162+ *Duration:* ${DURATION_MIN} minutes"
160163 fi
161164
162165 curl -X POST -H 'Content-type: application/json' --data '{"text":"'"$SLACK_MESSAGE"'"}' $E2E_SLACK_WEBHOOK_URL
163166
164-
167+ publish-npm-package :
168+ working_directory : ~/etherspot-modular-sdk
169+ docker :
170+ - image : cimg/node:20.11.1
171+ auth :
172+ username : $DOCKERHUB_USER
173+ password : $DOCKERHUB_PASSWORD
174+ steps :
175+ - checkout
176+ - run :
177+ name : Install Bun
178+ command : |
179+ curl -fsSL https://bun.sh/install | bash
180+ echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV
181+ echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV
182+ source $BASH_ENV
183+ - restore_cache :
184+ key : dependency-cache-{{ checksum "bun.lockb" }}
185+ - run :
186+ name : Authenticate with registry
187+ command : echo "//registry.npmjs.org/:_authToken=$ETHERSPOT_NPM_TOKEN" > ~/etherspot-modular-sdk/.npmrc
188+ - run :
189+ name : Install dependencies
190+ command : bun install
191+ - run :
192+ name : Build Etherspot Modular SDK
193+ command : bun run build
194+ - run :
195+ name : Publish package to npm
196+ command : |
197+ cd ~/etherspot-modular-sdk
198+ bun publish --access public
199+ - run :
200+ name : Announce Publish
201+ command : |
202+ chmod +x .circleci/announcePublish.sh
203+ .circleci/announcePublish.sh "Etherspot Modular SDK" "$(node -e "console.log(require('./package.json').version)")"
204+
205+ publish-github-release :
206+ docker :
207+ - image : ardd97/ghr
208+ steps :
209+ - checkout
210+ - run :
211+ name : Publish Release on GitHub
212+ command : |
213+ PACKAGE_VERSION="$(jq .version package.json -r)"
214+ echo $PACKAGE_VERSION
215+ ghr -t "${GITHUB_TOKEN}" -u "${CIRCLE_PROJECT_USERNAME}" -r "${CIRCLE_PROJECT_REPONAME}" -c "${CIRCLE_SHA1}" "$PACKAGE_VERSION"
216+
165217workflows :
166218 install-and-publish :
167219 jobs :
168220 - install :
169221 context : general-vars
170222 filters :
171223 branches :
172- only :
173- - e2e-modular
224+ only : master
174225
175226 - e2e-tests :
176227 name : testnet-e2e-tests
177228 context : general-vars
178229 filters :
179230 branches :
180- only :
181- - e2e-modular
182-
231+ only : master
232+
233+ - publish-npm-package :
234+ context : general-vars
235+ requires :
236+ - testnet-e2e-tests
237+ filters :
238+ branches :
239+ only : master
240+
241+ - publish-github-release :
242+ context : general-vars
243+ requires :
244+ - publish-npm-package
245+ filters :
246+ branches :
247+ only : master
0 commit comments