Skip to main content
Plugins / Discord

Discord

by appleboy

Send message to Discord channel using Webhook


Webhooks are a low-effort way to post messages to channels in Discord. They do not require a bot user or authentication to use.

The webhook provided by discord is a single URL which contains the webhook_id and the webhook_token. The URL follows the following pattern.

https://discord.com/api/webhooks/<webhook_id>/<webhook_token>

The discord plugin posts build status messages to discord channel. The below pipeline configuration demonstrates simple usage:

- name: discord notification
  image: appleboy/drone-discord
  settings:
    webhook_id: xxxxxxxxxx
    webhook_token: xxxxxxxxxx

Example configuration with TTS (text-to-speech) message:

  - name: discord notification
    image: appleboy/drone-discord
    settings:
      webhook_id: xxxxxxxxxx
      webhook_token: xxxxxxxxxx
+     tts: true
      message: "Testing from drone image"

Example configuration with override the default username of the webhook:

  - name: discord notification
    image: appleboy/drone-discord
    settings:
      webhook_id: xxxxxxxxxx
      webhook_token: xxxxxxxxxx
+     username: appleboy
      message: "Testing from drone image"

Example configuration with override the default avatar of the webhook:

  - name: discord notification
    image: appleboy/drone-discord
    settings:
      webhook_id: xxxxxxxxxx
      webhook_token: xxxxxxxxxx
+     avatar_url: http://exampple.com/appleboy.png
      message: "Testing from drone image"

Example configuration with a custom message template:

  - name: discord notification
    image: appleboy/drone-discord
    settings:
      webhook_id: xxxxxxxxxx
      webhook_token: xxxxxxxxxx
+     message: >
+       {{#success build.status}}
+         build {{build.number}} succeeded. Good job.
+       {{else}}
+         build {{build.number}} failed. Fix me please.
+       {{/success}}

Example configuration using credentials from secrets:

  - name: discord notification
    image: appleboy/drone-discord
    settings:
      webhook_id:
        from_secret: discord_webhook_id
      webhook_token:
        from_secret: discord_webhook_token
      message: "Testing from drone image"

Secret Reference

discord_webhook_id : discord webhook id

discord_webhook_token : discord webhook token

Parameter Reference

webhook_id : webhook id

webhook_token : webhook token

avatar_url : override the default avatar of the webhook

username : override the default username of the webhook

tts : true if this is a TTS message

message : the message contents (up to 2000 characters)

Template Reference

repo.owner : repository owner

repo.name : repository name

build.status : build status type enumeration, either success or failure

build.event : build event type enumeration, one of push, pull_request, tag, deployment

build.number : build number

build.commit : git sha for current commit

build.message : git commit messsage for current commit

build.branch : git branch for current commit

build.tag : git tag for current commit

build.ref : git ref for current commit

build.author : git author for current commit

build.link : link the the build results in drone

build.started : unix timestamp for build started

build.finished : unix timestamp for build finished

Template Function Reference

uppercasefirst : converts the first letter of a string to uppercase

uppercase : converts a string to uppercase

lowercase : converts a string to lowercase. Example {{lowercase build.author}}

datetime : converts a unix timestamp to a date time string. Example {{datetime build.started}}

success : returns true if the build is successful

failure : returns true if the build is failed

truncate : returns a truncated string to n characters. Example {{truncate build.sha 8}}

urlencode : returns a url encoded string

since : returns a duration string between now and the given timestamp. Example {{since build.started}}

Note for Woodpecker 3.x Users

Starting with Woodpecker 3.x, the build.status variable is always set to success, which means message templates cannot correctly distinguish between success and failure. It is recommended to use the when.status condition to split notifications for success and failure, as shown below:

- name: discord success notification
  when:
    status: [ success ]
  image: appleboy/drone-discord
  settings:
    webhook_id: xxxxxxxxxx
    webhook_token: xxxxxxxxxx
    message: >
      build {{build.number}} succeeded. Good job.

- name: discord failure notification
  when:
    status: [ failure ]
  image: appleboy/drone-discord
  settings:
    webhook_id: xxxxxxxxxx
    webhook_token: xxxxxxxxxx
    message: >
      build {{build.number}} failed. Fix me please.

This is due to a change in Woodpecker CI behavior and cannot be fixed on the plugin side. Please use the above workaround for correct notifications.