Skip to content

Drone and Woodpecker

Trigger Smoketest deployment webhooks from Drone or Woodpecker CI pipelines.

View as Markdown

Drone and Woodpecker both work well with Smoketest deployment webhooks because pipeline steps can call the trigger URL after deployment. Use the CI variables from your runner to pass branch and commit metadata.

Drone

Store SMOKETEST_DEPLOYMENT_WEBHOOK_URL as a Drone secret.

.drone.yml
kind: pipeline
type: docker
name: deploy

steps:
  - name: deploy
    image: alpine:3.20
    commands:
      - ./scripts/deploy.sh

  - name: smoketest
    image: curlimages/curl:8.8.0
    environment:
      SMOKETEST_DEPLOYMENT_WEBHOOK_URL:
        from_secret: smoketest_deployment_webhook_url
      DEPLOYMENT_URL: https://staging.example.com
    commands:
      - |
        curl -sf -X POST -G "$SMOKETEST_DEPLOYMENT_WEBHOOK_URL" \
          -H "Idempotency-Key: $DRONE_BUILD_NUMBER" \
          --data-urlencode "targetUrl=$DEPLOYMENT_URL" \
          --data-urlencode "commitSha=$DRONE_COMMIT_SHA" \
          --data-urlencode "branch=$DRONE_BRANCH" \
          --data-urlencode "externalId=$DRONE_BUILD_NUMBER"

Woodpecker

Store SMOKETEST_DEPLOYMENT_WEBHOOK_URL as a Woodpecker secret.

.woodpecker.yml
steps:
  deploy:
    image: alpine:3.20
    commands:
      - ./scripts/deploy.sh

  smoketest:
    image: curlimages/curl:8.8.0
    environment:
      SMOKETEST_DEPLOYMENT_WEBHOOK_URL:
        from_secret: smoketest_deployment_webhook_url
      DEPLOYMENT_URL: https://staging.example.com
    commands:
      - |
        curl -sf -X POST -G "$SMOKETEST_DEPLOYMENT_WEBHOOK_URL" \
          -H "Idempotency-Key: $CI_PIPELINE_NUMBER" \
          --data-urlencode "targetUrl=$DEPLOYMENT_URL" \
          --data-urlencode "commitSha=$CI_COMMIT_SHA" \
          --data-urlencode "branch=$CI_COMMIT_BRANCH" \
          --data-urlencode "externalId=$CI_PIPELINE_NUMBER"

If your Woodpecker secret uses a different name, replace smoketest_deployment_webhook_url in the example.

On this page