Skip to content

varu3/slack-approval

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

slack-approval

custom action to send approval request to Slack

  • Post a message in Slack with a "Aoorove" and "Reject" buttons.
  • Clicking on "Approve" will execute next steps.
  • Clicking on "Reject" will cause workflow to fail.

How To Use

  • First, create a Slack App and install in your workspace.
  • Second, add chat:write and im:write to OAuth Scope on OAuth & Permissions page.
  • Finally, Enable Socket Mode.
jobs:
  approval:
    runs-on: ubuntu-latest
    steps:
      - name: send approval
        uses: varu3/slack-approval@main
        env:
          SLACK_APP_TOKEN: ${{ secrets.SLACK_APP_TOKEN }}
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
          SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
          SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
        timeout-minutes: 10
  • Set environment variables

    • SLACK_APP_TOKEN

      • App-level tokens on Basic Information page. (starting with xapp- )
    • SLACK_BOT_TOKEN

      • Bot-level tokens on OAuth & Permissions page. (starting with xoxb- )
    • SLACK_SIGNING_SECRET

      • Signing Secret on Basic Information page.
    • SLACK_CHANNEL_ID

      • Channel ID for which you want to send approval.
  • Set timeout-minutes

    • Set the time to wait for approval. If the timeout is reached, GitHub Actions will forcefully terminate the workflow.

Custom Blocks

You can add custom blocks to the Slack notification by using the custom-blocks input:

jobs:
  approval:
    runs-on: ubuntu-latest
    steps:
      - name: send approval
        uses: varu3/slack-approval@main
        with:
          custom-blocks: |
            [
              {
                "type": "section",
                "text": {
                  "type": "mrkdwn",
                  "text": "*Environment:* Production"
                }
              }
            ]
        env:
          SLACK_APP_TOKEN: ${{ secrets.SLACK_APP_TOKEN }}
          SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
          SLACK_SIGNING_SECRET: ${{ secrets.SLACK_SIGNING_SECRET }}
          SLACK_CHANNEL_ID: ${{ secrets.SLACK_CHANNEL_ID }}
        timeout-minutes: 10

The custom blocks will be displayed after the workflow information and before the Approve/Reject buttons. You can use any valid Slack Block Kit blocks.

About

Custom action to send approval request to Slack

Resources

Stars

Watchers

Forks

Packages

No packages published