• Stars
    star
    166
  • Rank 227,748 (Top 5 %)
  • Language
    TypeScript
  • License
    MIT License
  • Created about 5 years ago
  • Updated 4 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Post GitHub Actions status to Discord as an beautiful embed

Actions Status Discord

Post GitHub Actions status to Discord as an beautiful embed

image

  • 🍣 Zero-configuration! Works perfectly out of the box.
  • 🍣 OS-agnostic! Supports Linux (Ubuntu), macOS and Windows runners.
  • 🍣 Fast startup! Faster than ones written as Docker container action.

⚠️ If you're reading this document in master branch, please refer to the latest released document here.

Usage

Minimum

- uses: sarisia/actions-status-discord@v1
  if: always()
  with:
    webhook: ${{ secrets.DISCORD_WEBHOOK }}

image

Full options

- uses: sarisia/actions-status-discord@v1
  if: always()
  with:
    webhook: ${{ secrets.DISCORD_WEBHOOK }}
    status: ${{ job.status }}
    content: "Hey <@316911818725392384>"
    title: "deploy"
    description: "Build and deploy to GitHub Pages"
    image: ${{ secrets.EMBED_IMAGE }}
    color: 0x0000ff
    url: "https://github.com/sarisia/actions-status-discord"
    username: GitHub Actions
    avatar_url: ${{ secrets.AVATAR_URL }}

image

No detail

- uses: sarisia/actions-status-discord@v1
  if: always()
  env:
    DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
  with:
    nodetail: true
    title: "We did it!"
    color: 0xff91a4

image

For if parameter, see GitHub Actions Reference

Configuration

Environment Variables

Key Value Description
DISCORD_WEBHOOK Discord webhook endpoind like:
https://discordapp.com/api/webhooks/...
You can provide webhook via inputs either.
DO NOT APPEND /github SUFFIX!

Inputs

General customizations

Key Required Value Default Description
webhook No String env.DISCORD_WEBHOOK Discord webhook endpoind like:
https://discordapp.com/api/webhooks/...
This overrides env.DISCORD_WEBHOOK.
DO NOT APPEND /github SUFFIX!
status No Success, Failure or Cancelled ${{ job.status }} See Document for job context
content No String Content. Shown as an message outside of the embed. See Mention to user/role
title No String ${{ github.workflow}} String included in embed title. Overrides job input.
description No String Description included in message
image No String Image attached to the message
color No Hex string like: 0xFFFFFF Overrides Discord embed color
url No String URL to jump when the title is clicked
username No String Overrides Discord webhook username
avatar_url No String Overrides Discord webhook avatar url

Advanced usages

Key Required Value Default Description
nofail No true or false true This action won't make workflow failed by default. If set to false, this action will set status failed when failed to notify.
nocontext No true or false false Set true to suppress GitHub context fields (Repository, Ref, etc).
noprefix No true or false false Set true to avoid appending job status (Success: , etc.) to title
nodetail No true or false false Set true will set both nocontext and noprefix to true
notimestamp No true or false false Set true to avoid appending timestamp
Show deprecated
Key Required Value Default Description
job No String Deprecated. Will be removed in v2
Job name included in message title. Same as title input.

Tips

Using markdown

Some fields support markdown syntax.

- uses: sarisia/actions-status-discord@v1
  with:
    webhook: ${{ secrets.DISCORD_WEBHOOK }}
    nodetail: true
    title: New version of `software` is ready!
    description: |
      Version `1.2.3-alpha`
      Click [here](https://github.com/sarisia/actions-status-discord) to download!

image

Mention to user/role

Since @mention inside the embed does not generate ping to users, you can use content input to mention users/roles:

- uses: sarisia/actions-status-discord@v1
  if: always()
  with:
    webhook: ${{ secrets.DISCORD_WEBHOOK }}
    content: "Hey <@316911818725392384>"

See the Discord Developer Docs for available formats.

Trigger multiple webhooks

You can set multiple webhooks separated with EOL (line break, \n) to Secrets.

For example, set Secrets to:

https://discordapp.com/api/webhooks/...
https://media.guilded.gg/webhooks/...
https://this-is-invalid-webhook-endpoint.invalid/...

will trigger these 3 webhooks simultaneously.

If some of these webhooks are failed, other deliveries will NOT be cancelled.

If the option nofail is set to false and any of one fail, the action will set workflow status to Failure.

GHES, Gitea and Forgejo

This actions may work with GHES, Gitea and Forgejo, but not tested against yet.

If you have any issues, please let us know in Discussions or Issues.

Guilded webhook support

As Guilded supports Discord Webhooks API, you can use Guilded webhook endpoint in the same way as Discord webhook.

FAQ

Error: Webhook response: 400: {"sender":["This field is required"]}

Do not append /github suffix to your webhook URL. See Inputs section.

Questions? Bugs?

Feel free to ask in Discussions, or report bugs in Issues!