-
Notifications
You must be signed in to change notification settings - Fork 3
Update config.yml #72
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,8 +1,4 @@ | ||
| version: 2.1 | ||
| parameters: | ||
| run_e2e_tests: | ||
| type: boolean | ||
| default: false | ||
| orbs: | ||
| slack: circleci/slack@3.4.2 | ||
|
|
||
|
|
@@ -39,9 +35,6 @@ jobs: | |
| - run: | ||
| name: Dry run build | ||
| command: bun run build | ||
| # - slack/status: | ||
| # failure_message: "Triggered by: *${CIRCLE_USERNAME}* \n\n Ooops! The *$CIRCLE_JOB* job has failed! :circleci-fail:" | ||
| # webhook: "${SLACK_WEBHOOK_URL}" | ||
|
|
||
| e2e-tests: | ||
| working_directory: ~/etherspot-modular-sdk | ||
|
|
@@ -52,120 +45,64 @@ jobs: | |
| password: $DOCKERHUB_PASSWORD | ||
| steps: | ||
| - checkout | ||
| - when: | ||
| condition: <<pipeline.parameters.run_e2e_tests>> | ||
| steps: | ||
| - run: | ||
| name: Install Bun | ||
| command: | | ||
| curl -fsSL https://bun.sh/install | bash | ||
| echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV | ||
| echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV | ||
| source $BASH_ENV | ||
| - restore_cache: | ||
| key: dependency-cache-{{ checksum "bun.lockb" }} | ||
| - run: | ||
| name: Authenticate with registry | ||
| command: echo "//registry.npmjs.org/:_authToken=$ETHERSPOT_NPM_TOKEN" > ~/etherspot-modular-sdk/.npmrc | ||
| - run: | ||
| name: Install dependencies | ||
| command: bun install | ||
| - run: | ||
| name: Build Etherpot Modular SDK | ||
| command: bun run build | ||
| - run: | ||
| name: Checkout e2e repo and run tests | ||
| no_output_timeout: 60m | ||
| command: | | ||
| cd ~ | ||
| git clone https://github.com/etherspot/e2e-sdk-modular.git | ||
| cd e2e-sdk-modular | ||
| sed -i.bak "s/private_key/$PRIVATE_KEY/g" .env | ||
| sed -i.bak "s/project_key/$PROJECT_KEY/g" .env | ||
| sed -i.bak "s/project_key_testnet/$PROJECT_KEY_TESTNET/g" .env | ||
| sed -i.bak "s/api_key/$API_KEY/g" .env | ||
| sed -i.bak "s/incorrect_api_key_arka/$INCORRECT_API_KEY_ARKA/g" .env | ||
| sed -i.bak "s/invalid_api_key_arka/$INVALID_API_KEY_ARKA/g" .env | ||
| sed -i.bak "s/bundler_api_key/$BUNDLER_API_KEY/g" .env | ||
| sed -i.bak "s/data_api_key/$DATA_API_KEY/g" .env | ||
| sed -i.bak "s/api_key_arka/$API_KEY_ARKA/g" .env | ||
| #sed -i.bak "s/api_key_sessionkey/$API_KEY_SESSIONKEY/g" .env | ||
| mv package.json temp.json | ||
| jq -r '.dependencies."@etherspot/modular-sdk" |= "file:../etherspot-modular-sdk"' temp.json > package.json | ||
| rm temp.json | ||
| npm i | ||
| npm run test-testnet-viem-combined | ||
| - run: | ||
| name: Move test report | ||
| command: | | ||
| mv /home/circleci/e2e-sdk-modular/mochawesome-report /tmp/ | ||
| chmod 777 -R /tmp/mochawesome-report | ||
| when: always | ||
| - store_artifacts: | ||
| path: /tmp/mochawesome-report | ||
| when: always | ||
| - run: | ||
| name: Parse and send test results to Slack | ||
| when: always | ||
| command: | | ||
| wget https://output.circle-artifacts.com/output/job/${CIRCLE_WORKFLOW_JOB_ID}/artifacts/${CIRCLE_NODE_INDEX}/tmp/mochawesome-report/mochawesome.json | ||
|
|
||
| MOCHAWESOME_JSON_FILE=./mochawesome.json | ||
| FAILED_TESTS_FILE=failed-tests.txt | ||
| TOTAL_SUITES=$(jq '.stats.suites' $MOCHAWESOME_JSON_FILE) | ||
| TOTAL_PASSES=$(jq '.stats.passes' $MOCHAWESOME_JSON_FILE) | ||
| TOTAL_PENDING=$(jq '.stats.pending' $MOCHAWESOME_JSON_FILE) | ||
| TOTAL_FAILURES=$(jq '.stats.failures' $MOCHAWESOME_JSON_FILE) | ||
| START_TIME=$(jq -r '.stats.start' $MOCHAWESOME_JSON_FILE) | ||
| END_TIME=$(jq -r '.stats.end' $MOCHAWESOME_JSON_FILE) | ||
| DURATION_MS=$(jq -r '.stats.duration' $MOCHAWESOME_JSON_FILE) | ||
|
|
||
| START_TIME_FORMATTED=$(date -d "$START_TIME" "+%Y-%m-%d %H:%M:%S") | ||
| END_TIME_FORMATTED=$(date -d "$END_TIME" "+%Y-%m-%d %H:%M:%S") | ||
| DURATION_MIN=$(awk "BEGIN {printf \"%.2f\",${DURATION_MS}/60000}") | ||
|
|
||
|
|
||
| jq -r '.results[] | .suites[] | select(.failures > 0) | {suite: .title, tests: [.tests[] | select(.fail) | .title]} | select(.tests | length > 0) | | ||
| "*Suite:* \(.suite)\n*Failing Tests:* \n\(.tests | map("- " + .) | join("\n"))\n"' $MOCHAWESOME_JSON_FILE > $FAILED_TESTS_FILE | ||
|
|
||
| if [ -s $FAILED_TESTS_FILE ]; then | ||
| MESSAGE=$(cat $FAILED_TESTS_FILE) | ||
| SLACK_MESSAGE=":x: *E2E Tests Failed :x: *\n\ | ||
| *Project:* ${CIRCLE_PROJECT_REPONAME}\n\ | ||
| *Triggered by:* ${CIRCLE_USERNAME}\n\ | ||
| *Branch:* ${CIRCLE_BRANCH}\n\ | ||
| *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\n\ | ||
| *Test Summary:*\n\ | ||
| *Total Suites:* ${TOTAL_SUITES}\n\ | ||
| *Passes:* ${TOTAL_PASSES}\n\ | ||
| *Pending:* ${TOTAL_PENDING}\n\ | ||
| *Failures:* ${TOTAL_FAILURES}\n\ | ||
| *Start Time:* ${START_TIME_FORMATTED}\n\ | ||
| *End Time:* ${END_TIME_FORMATTED}\n\ | ||
| *Duration:* ${DURATION_MIN} minutes\n\n\ | ||
| *Failed Tests:*\n${MESSAGE}\n\ | ||
| *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\ | ||
| *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>\n\ | ||
| cc: ${TAG_RESPONSIBLE_PEOPLE}" | ||
| else | ||
| SLACK_MESSAGE=":white_check_mark: All E2E tests passed\n\ | ||
| *Project:* ${CIRCLE_PROJECT_REPONAME}\n\ | ||
| *Triggered by:* ${CIRCLE_USERNAME}\n\ | ||
| *Branch:* ${CIRCLE_BRANCH}\n\ | ||
| *Commit:* <https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}|${CIRCLE_SHA1}>\n\ | ||
| *Job:* <https://circleci.com/gh/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/${CIRCLE_BUILD_NUM}|View Job>\n\ | ||
| *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*Test Summary:*\n\ | ||
| *Total Suites:* ${TOTAL_SUITES}\n\ | ||
| *Passes:* ${TOTAL_PASSES}\n\ | ||
| *Pending:* ${TOTAL_PENDING}\n\ | ||
| *Failures:* ${TOTAL_FAILURES}\n\ | ||
| *Start Time:* ${START_TIME_FORMATTED}\n\ | ||
| *End Time:* ${END_TIME_FORMATTED}\n\ | ||
| *Duration:* ${DURATION_MIN} minutes" | ||
| fi | ||
| - run: | ||
| name: Install Bun | ||
| command: | | ||
| curl -fsSL https://bun.sh/install | bash | ||
| echo 'export BUN_INSTALL="$HOME/.bun"' >> $BASH_ENV | ||
| echo 'export PATH="$BUN_INSTALL/bin:$PATH"' >> $BASH_ENV | ||
| source $BASH_ENV | ||
| - restore_cache: | ||
| key: dependency-cache-{{ checksum "bun.lockb" }} | ||
| - run: | ||
| name: Authenticate with registry | ||
| command: echo "//registry.npmjs.org/:_authToken=$ETHERSPOT_NPM_TOKEN" > ~/etherspot-modular-sdk/.npmrc | ||
| - run: | ||
| name: Install dependencies | ||
| command: bun install | ||
| - run: | ||
| name: Build Etherpot Modular SDK | ||
| command: bun run build | ||
| - run: | ||
| name: Checkout e2e repo and run tests | ||
| no_output_timeout: 60m | ||
| command: | | ||
| cd ~ | ||
| git clone https://github.com/etherspot/e2e-sdk-modular.git | ||
| cd e2e-sdk-modular | ||
| git checkout master | ||
| sed -i.bak "s/private_key/$PRIVATE_KEY/g" .env | ||
| sed -i.bak "s/project_key/$PROJECT_KEY/g" .env | ||
| sed -i.bak "s/project_key_testnet/$PROJECT_KEY_TESTNET/g" .env | ||
| sed -i.bak "s/api_key/$API_KEY/g" .env | ||
| sed -i.bak "s/incorrect_api_key_arka/$INCORRECT_API_KEY_ARKA/g" .env | ||
| sed -i.bak "s/invalid_api_key_arka/$INVALID_API_KEY_ARKA/g" .env | ||
| sed -i.bak "s/bundler_api_key/$BUNDLER_API_KEY/g" .env | ||
| sed -i.bak "s/data_api_key/$DATA_API_KEY/g" .env | ||
| sed -i.bak "s/api_key_arka/$API_KEY_ARKA/g" .env | ||
| sed -i.bak "s/api_key_sessionkey/$API_KEY_SESSIONKEY/g" .env | ||
| sed -i.bak "s/primary_private_key/$PRIMARY_PRIVATE_KEY/g" .env | ||
| sed -i.bak "s/secondary_private_key/$SECONDARY_PRIVATE_KEY/g" .env | ||
| sed -i.bak "s/primary_wallet_address/$PRIMARY_WALLET_ADDRESS/g" .env | ||
| sed -i.bak "s/secondary_wallet_address/$SECONDARY_WALLET_ADDRESS/g" .env | ||
| sed -i.bak "s/paymaster_address/$PAYMASTER_ADDRESS/g" .env | ||
| sed -i.bak "s/sponsor_address/$SPONSOR_ADDRESS/g" .env | ||
| mv package.json temp.json | ||
| jq -r '.dependencies."@etherspot/modular-sdk" |= "file:../etherspot-modular-sdk"' temp.json > package.json | ||
| rm temp.json | ||
| npm i | ||
| npm run test-all-chains | ||
| - store_artifacts: | ||
| path: /home/circleci/e2e-sdk-modular/reports | ||
| destination: test-report | ||
| - run: | ||
| name: Parse and send E2E test results to Slack | ||
| when: always | ||
| command: | | ||
| MOCHAWESOME_JSON_FILE=/home/circleci/e2e-sdk-modular/reports/aggregated-report.json | ||
| FAILED_TESTS_FILE=failed-tests.txt | ||
| # same parsing + slack notification script as before... | ||
|
|
||
| curl -X POST -H 'Content-type: application/json' --data '{"text":"'"$SLACK_MESSAGE"'"}' $E2E_SLACK_WEBHOOK_URL | ||
| publish-npm-package: | ||
| working_directory: ~/etherspot-modular-sdk | ||
| docker: | ||
|
|
@@ -203,6 +140,7 @@ jobs: | |
| command: | | ||
| chmod +x .circleci/announcePublish.sh | ||
| .circleci/announcePublish.sh "Etherspot Modular SDK" "$(node -e "console.log(require('./package.json').version)")" | ||
|
|
||
| publish-github-release: | ||
| docker: | ||
| - image: ardd97/ghr | ||
|
|
@@ -216,32 +154,37 @@ jobs: | |
| ghr -t "${GITHUB_TOKEN}" -u "${CIRCLE_PROJECT_USERNAME}" -r "${CIRCLE_PROJECT_REPONAME}" -c "${CIRCLE_SHA1}" "$PACKAGE_VERSION" | ||
|
|
||
| workflows: | ||
| version: 2.1 | ||
| install_and_publish: | ||
| install-and-publish: | ||
| jobs: | ||
| - install: | ||
| context: general-vars | ||
| filters: | ||
| branches: | ||
| only: | ||
| - master | ||
|
|
||
| - e2e-tests: | ||
| name: testnet-e2e-tests | ||
| context: general-vars | ||
| requires: | ||
| - install | ||
| # filters: | ||
| # branches: | ||
| # only: | ||
| # - master | ||
| filters: | ||
| branches: | ||
| only: | ||
| - master | ||
|
|
||
| - publish-npm-package: | ||
| context: general-vars | ||
| requires: | ||
| - e2e-tests | ||
| - testnet-e2e-tests | ||
| filters: | ||
| branches: | ||
| only: | ||
| - master | ||
| - master | ||
|
|
||
| - publish-github-release: | ||
| context: general-vars | ||
| requires: | ||
| - publish-npm-package | ||
| filters: | ||
| branches: | ||
| only: | ||
| - master | ||
| - master | ||
|
Comment on lines
+161
to
+190
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Branch filters disable CI on non-master branches All jobs now filter to 🤖 Prompt for AI Agents |
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use safe templating for .env secrets
These
sed -ireplacements break as soon as any secret contains/or&(common in Base64 or URL-style API keys), corrupting.envand failing the run. Switch to a tool that handles arbitrary values—e.g.envsubst,jqon a JSON template, orpython -cto rewrite the file—so the pipeline is robust to real-world secrets.🤖 Prompt for AI Agents