Skip to content

CircleCI

Trigger Smoketest deployment webhooks from CircleCI after a deploy job.

View as Markdown

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

  1. Create a deployment webhook in Smoketest.
  2. Add SMOKETEST_DEPLOYMENT_WEBHOOK_URL as a masked CircleCI environment variable.
  3. Decide how your deploy job exposes the deployed URL. For fixed production runs, omit targetUrl.

Workflow example

.circleci/config.yml
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:
            - deploy

Dynamic 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.

.circleci/config.yml
- 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"

On this page