Skip to content

Slack Deploy Pipeline Notifications

Actions
Post deploy workflow progress notifications to Slack
v2.1.0
Latest
Star (5)

Tags

 (2)

ci

Slack Deploy Pipeline Notifications

Post GitHub Action deploy workflow progress notifications to Slack.


Slack Deploy Pipeline Notifications example thread

Features

  • Posts summary message at beginning of the deploy workflow, surfacing commit message and author
  • Maps GitHub commit author to Slack user by full name, mentioning them in the summary message
  • Threads intermediate stage completions, sending unexpected failures back to the channel
  • Adds summary message reaction to unsuccessful jobs (useful with Reacji Channeler)
  • Updates summary message duration at conclusion of the workflow
  • Supports pull_request, push, release, schedule, and workflow_dispatch event types

Setup

  1. Create a Slack App for your workspace
  2. Under OAuth & Permissions, add two Bot Token Scopes:
    1. chat:write to post messages
    2. chat:write.customize to customize messages with GitHub commit author
    3. reactions:write to add summary message error reactions
    4. users:read to map GitHub user to Slack user
  3. Install the app to your workspace
  4. Copy the app's Bot User OAuth Token from the OAuth & Permissions page
  5. Create a GitHub secret with this token, named SLACK_DEPLOY_BOT_TOKEN
  6. Invite the bot user into the Slack channel you will post messages to (/invite @bot_user_name)
  7. Click the Slack channel name in the header, and copy its Channel ID from the bottom of the dialog

Usage

name: Deploy

on:
  push:
    branches:
      - main

# 1. Configure environment variables
env:
  SLACK_DEPLOY_BOT_TOKEN: ${{ secrets.SLACK_DEPLOY_BOT_TOKEN }} # required
  SLACK_DEPLOY_CHANNEL: 'C040YVCUDRR' # required - replace with your Slack Channel ID
  SLACK_DEPLOY_ERROR_REACTION: 'x' # optional emoji name added as non-successful summary message reaction

jobs:
  staging:
    runs-on: ubuntu-latest
    outputs:
      slack_ts: ${{ steps.slack.outputs.ts }}
    steps:
      # 2. Post summary message at the beginning of your workflow
      - name: Post to Slack
        uses: Fieldguide/action-slack-deploy-pipeline@v2
        id: slack

      - name: Deploy to staging
        run: sleep 10 # replace with your deploy steps

      # 3. Post threaded stage updates throughout
      - name: Post to Slack
        uses: Fieldguide/action-slack-deploy-pipeline@v2
        if: always()
        with:
          thread_ts: ${{ steps.slack.outputs.ts }}

  production:
    needs:
      - staging
    runs-on: ubuntu-latest
    steps:
      - name: Deploy to production
        run: sleep 5 # replace with your deploy steps

      # 4. Post last "conclusion" stage
      - name: Post to Slack
        uses: Fieldguide/action-slack-deploy-pipeline@v2
        if: always()
        with:
          thread_ts: ${{ needs.staging.outputs.slack_ts }}
          conclusion: true
  1. Configure required SLACK_DEPLOY_BOT_TOKEN and SLACK_DEPLOY_CHANNEL environment variables.
  2. Use this action at the beginning of your workflow to post a "Deploying" message in your configured channel.
  3. As your workflow progresses, use this action with the thread_ts input to post threaded replies.
  4. Denote the last step with the conclusion input to update the initial message's status.

Environment Variables

variable description
SLACK_DEPLOY_BOT_TOKEN Required Slack bot user OAuth token
SLACK_DEPLOY_CHANNEL Required Slack channel ID
SLACK_DEPLOY_ERROR_REACTION Optional Slack emoji name

Inputs

input description
thread_ts Initial Slack message timestamp ID
conclusion true denotes last stage
github_token Repository GITHUB_TOKEN or personal access token secret; defaults to github.token
status The current status of the job; defaults to job.status

Outputs

output description
ts Slack message timestamp ID

Slack Deploy Pipeline Notifications is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.

About

Post deploy workflow progress notifications to Slack
v2.1.0
Latest

Tags

 (2)

Slack Deploy Pipeline Notifications is not certified by GitHub. It is provided by a third-party and is governed by separate terms of service, privacy policy, and support documentation.