Skip to content

Commit 4cf4ff3

Browse files
authored
Merge pull request #74 from etherspot/e2e-modular
fixing Pipeline
2 parents 712c28c + bcc4979 commit 4cf4ff3

File tree

1 file changed

+61
-70
lines changed

1 file changed

+61
-70
lines changed

.circleci/config.yml

Lines changed: 61 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -97,63 +97,71 @@ jobs:
9797
path: /home/circleci/e2e-sdk-modular/reports
9898
destination: test-report
9999
- run:
100-
name: Parse and send E2E test results to Slack
100+
name: Parse and send test results to Slack
101101
when: always
102102
command: |
103103
MOCHAWESOME_JSON_FILE=/home/circleci/e2e-sdk-modular/reports/aggregated-report.json
104104
FAILED_TESTS_FILE=failed-tests.txt
105-
# same parsing + slack notification script as before...
106105
107-
publish-npm-package:
108-
working_directory: ~/etherspot-modular-sdk
109-
docker:
110-
- image: cimg/node:20.11.1
111-
auth:
112-
username: $DOCKERHUB_USER
113-
password: $DOCKERHUB_PASSWORD
114-
steps:
115-
- checkout
116-
- run:
117-
name: Install Bun
118-
command: |
119-
curl -fsSL https://bun.sh/install | bash
120-
echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV
121-
echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV
122-
source $BASH_ENV
123-
- restore_cache:
124-
key: dependency-cache-{{ checksum "bun.lockb" }}
125-
- run:
126-
name: Authenticate with registry
127-
command: echo "//registry.npmjs.org/:_authToken=$ETHERSPOT_NPM_TOKEN" > ~/etherspot-modular-sdk/.npmrc
128-
- run:
129-
name: Install dependencies
130-
command: bun install
131-
- run:
132-
name: Build Etherpot Prime SDK
133-
command: bun run build
134-
- run:
135-
name: Publish package to npm
136-
command: |
137-
cd ~/etherspot-modular-sdk
138-
bun publish --access public
139-
- run:
140-
name: Announce Publish
141-
command: |
142-
chmod +x .circleci/announcePublish.sh
143-
.circleci/announcePublish.sh "Etherspot Modular SDK" "$(node -e "console.log(require('./package.json').version)")"
106+
if [ ! -f "$MOCHAWESOME_JSON_FILE" ]; then
107+
echo "❌ Aggregated mochawesome report not found at $MOCHAWESOME_JSON_FILE"
108+
exit 0
109+
fi
110+
TOTAL_SUITES=$(jq '.stats.suites' $MOCHAWESOME_JSON_FILE)
111+
TOTAL_PASSES=$(jq '.stats.passes' $MOCHAWESOME_JSON_FILE)
112+
TOTAL_PENDING=$(jq '.stats.pending' $MOCHAWESOME_JSON_FILE)
113+
TOTAL_FAILURES=$(jq '.stats.failures' $MOCHAWESOME_JSON_FILE)
114+
START_TIME=$(jq -r '.stats.start' $MOCHAWESOME_JSON_FILE)
115+
END_TIME=$(jq -r '.stats.end' $MOCHAWESOME_JSON_FILE)
116+
DURATION_MS=$(jq -r '.stats.duration' $MOCHAWESOME_JSON_FILE)
144117
145-
publish-github-release:
146-
docker:
147-
- image: ardd97/ghr
148-
steps:
149-
- checkout
150-
- run:
151-
name: "Publish Release on GitHub"
152-
command: |
153-
PACKAGE_VERSION="$(jq .version package.json -r)"
154-
echo $PACKAGE_VERSION
155-
ghr -t "${GITHUB_TOKEN}" -u "${CIRCLE_PROJECT_USERNAME}" -r "${CIRCLE_PROJECT_REPONAME}" -c "${CIRCLE_SHA1}" "$PACKAGE_VERSION"
118+
START_TIME_FORMATTED=$(date -d "$START_TIME" "+%Y-%m-%d %H:%M:%S")
119+
END_TIME_FORMATTED=$(date -d "$END_TIME" "+%Y-%m-%d %H:%M:%S")
120+
DURATION_MIN=$(awk "BEGIN {printf \"%.2f\",${DURATION_MS}/60000}")
121+
122+
123+
jq -r '.results[] | .suites[] | select(.failures > 0) | {suite: .title, tests: [.tests[] | select(.fail) | .title]} | select(.tests | length > 0) |
124+
"*Suite:* \(.suite)\n*Failing Tests:* \n\(.tests | map("- " + .) | join("\n"))\n"' $MOCHAWESOME_JSON_FILE > $FAILED_TESTS_FILE
156125
126+
if [ -s $FAILED_TESTS_FILE ]; then
127+
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>"
144+
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"
160+
fi
161+
162+
curl -X POST -H 'Content-type: application/json' --data '{"text":"'"$SLACK_MESSAGE"'"}' $E2E_SLACK_WEBHOOK_URL
163+
164+
157165
workflows:
158166
install-and-publish:
159167
jobs:
@@ -162,30 +170,13 @@ workflows:
162170
filters:
163171
branches:
164172
only:
165-
- master
173+
- e2e-modular
166174

167175
- e2e-tests:
168176
name: testnet-e2e-tests
169177
context: general-vars
170178
filters:
171179
branches:
172180
only:
173-
- master
174-
175-
- publish-npm-package:
176-
context: general-vars
177-
requires:
178-
- testnet-e2e-tests
179-
filters:
180-
branches:
181-
only:
182-
- master
183-
184-
- publish-github-release:
185-
context: general-vars
186-
requires:
187-
- publish-npm-package
188-
filters:
189-
branches:
190-
only:
191-
- master
181+
- e2e-modular
182+

0 commit comments

Comments
 (0)