CircleCI
Trigger Smoketest deployment webhooks from CircleCI after a deploy job.
Use CircleCI when your workflow has a deploy job and a follow-up test job. Store the Smoketest webhook URL as a project environment variable or in a context.
Before you start
- Create a deployment webhook in Smoketest.
- Add
SMOKETEST_DEPLOYMENT_WEBHOOK_URLas a masked CircleCI environment variable. - Decide how your deploy job exposes the deployed URL. For fixed production runs, omit
targetUrl.
Workflow example
version: 2.1
jobs:
deploy:
docker:
- image: cimg/base:stable
steps:
- checkout
- run: ./scripts/deploy.sh
smoketest:
docker:
- image: cimg/base:stable
environment:
DEPLOYMENT_URL: https://staging.example.com
steps:
- run:
name: Trigger Smoketest
command: |
curl -sf -X POST -G "$SMOKETEST_DEPLOYMENT_WEBHOOK_URL" \
-H "Idempotency-Key: $CIRCLE_WORKFLOW_ID" \
--data-urlencode "targetUrl=$DEPLOYMENT_URL" \
--data-urlencode "commitSha=$CIRCLE_SHA1" \
--data-urlencode "branch=$CIRCLE_BRANCH" \
--data-urlencode "externalId=$CIRCLE_WORKFLOW_ID"
workflows:
deploy-and-test:
jobs:
- deploy
- smoketest:
requires:
- deployDynamic preview URL
If the deploy job computes a preview URL, persist it to a workspace and attach it in the smoketest job, or call Smoketest in the deploy job immediately after deployment.
- run:
name: Deploy and trigger Smoketest
command: |
DEPLOYMENT_URL="$(./scripts/deploy-preview.sh)"
curl -sf -X POST -G "$SMOKETEST_DEPLOYMENT_WEBHOOK_URL" \
-H "Idempotency-Key: $CIRCLE_WORKFLOW_ID" \
--data-urlencode "targetUrl=$DEPLOYMENT_URL" \
--data-urlencode "commitSha=$CIRCLE_SHA1" \
--data-urlencode "branch=$CIRCLE_BRANCH" \
--data-urlencode "externalId=$CIRCLE_WORKFLOW_ID"