SethCohen / github-releases-to-discord

Posts a GitHub Release changelog to a specified Discord channel
MIT License
21 stars 8 forks source link
action changelog changelog-parser discord discord-webhook embed github github-action github-actions github-release release webhook

GitHub Releases To Discord Action

A GitHub Action that sends a stylized Discord webhook containing the description of a GitHub Release to a specified Discord channel. It formats the description to improve readability and includes various configuration options to customize the message.

Features


Output

output

Configuration

Variable Required Default Description
webhook_url Discord's webhook url. Use GH repo secrets.
color "2105893" Decimal color value for embed.
username String username for webhook.
avatar_url String url to webhook avatar picture.
content String content for webhook.
footer_title String title for the webhook footer.
footer_icon_url String url for the webhook footer picture.
footer_timestamp Boolean to enable footer timestamp.
max_description "4096" Max length for the description.
reduce_headings false Converts H3 to bold, h2 to bold & underline.

Example Usage

.github/workflows/github-releases-to-discord.yml

on:
  release:
    types: [published]

jobs:
  github-releases-to-discord:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v3
      - name: Github Releases To Discord
        uses: SethCohen/github-releases-to-discord@v1
        with:
          webhook_url: ${{ secrets.WEBHOOK_URL }}
          color: "2105893"
          username: "Release Changelog"
          avatar_url: "https://cdn.discordapp.com/avatars/487431320314576937/bd64361e4ba6313d561d54e78c9e7171.png"
          content: "||@everyone||"
          footer_title: "Changelog"
          footer_icon_url: "https://cdn.discordapp.com/avatars/487431320314576937/bd64361e4ba6313d561d54e78c9e7171.png"
          footer_timestamp: true
          max_description: '4096'
          reduce_headings: true

Setup Instructions

  1. Open your Server Settings and head into the Integrations tab:
  2. Click the "Create Webhook" button to create a new webhook! create webhook created webhook
  3. Copy the webhook url
  4. Create a new GitHub repository secret called WEBHOOK_URL and paste the webhook url into it. repository secret
  5. Save the secret.
  6. Add the secret to your action configuration.

And you're done! Whenever you create a new release, the workflow should run and, if properly setup, post to your specified Discord channel.

Contributing

If you have suggestions for how GitHub Releases To Discord Action could be improved, or want to report a bug, open an issue! We'd love all and any contributions.

  1. Fork the repository.
  2. Install node and run npm install.
  3. Install Github Action tester act
  4. Create a sample test Release file to simulate a webhook payload object such as tests/sample-test-release.json with the following structure:
{
  "action": "published",
  "release": {
      ...
  },
  "repository": {
      ...
  },
  "sender": {
      ...
  }
}

This file will be used to test the action locally and simulate a real release event webhook payload. Refer to the GitHub Webhook documentation and the Github API Documentation for more information on the webhook payload structure.

  1. Fill the test json file with the necessary fields to simulate a release event.
  2. Create a test file called .env in the main root of the project with the following environmental variables:
  INPUT_WEBHOOK_URL=
  INPUT_COLOR=
  INPUT_USERNAME=
  INPUT_AVATAR_URL=
  INPUT_CONTENT=
  INPUT_FOOTER_TITLE=
  INPUT_FOOTER_ICON_URL=
  INPUT_FOOTER_TIMESTAMP=
  INPUT_MAX_DESCRIPTION=
  INPUT_REDUCE_HEADINGS=
  1. Fill the .env file with your chosen environmental variables values.
  2. Create a Discord webhook in your server, making sure to add the webhook url to the .env file under INPUT_WEBHOOK_URL=.
  3. Run the action locally with act release -e <your.json> (e.g., act release -e tests/sample-test-release.json) and check the output in your Discord server.
  4. Confirm that the action works as expected.
  5. Make your changes and commit them: git commit -m '<commit_message>'. Please follow Conventional Commits.
  6. Create the pull request.