Notify GitHub Actions build results to Slack using slack-send
Overview
In this tutorial, we will combine GitHub Actions and slack-send to notify build results to Slack.
Prerequisites
This tutorial assumes that you are operating a website under the following conditions:
- Using Next.js/Nuxt.js.
- Using KurocoFront.
- Using GitHub Actions.
Also, in this tutorial, we will use slack-send to send notifications to Slack. Please refer to the slack-send documentation for details.
Create a notification app from Slack app settings
Create an app from the following screen: https://api.slack.com/apps?new_app=1
Select From an app manifest
.
Select the workspace to add the app.
Set the following YAML in App Manifest
.
Use incoming-webhook to send notifications to Slack.
_metadata:
major_version: 1
minor_version: 1
display_information:
name: github-action-slack-send
features:
bot_user:
display_name: github-action-slack-send
oauth_config:
scopes:
bot:
- incoming-webhook
Click [Create] to create the app.
Install the app in the workspace
Install the app you created in the workspace from Install to Workspace
in Basic Information
.
Select the channel to notify.
After the app is added, you can see that Bot User OAuth Token
and Webhook URL
are added to Install app
.
Copy the Webhook URL
as it will be registered in GitHub.
Add Webhook URL to GitHub Secrets
Open the GitHub repository page.
Click Settings
-> Secrets and variables
-> New repository secret
in Actions
.
Set SLACK_INCOMING_WEBHOOK_URL
in Name.
Set the copied Webhook URL
in Secret.
Once you have entered the information, click [Add secret] to add the GitHub secret.
Creating a Workflow File for Slack Notifications
Create a file named slack-build-notifier.yml
in the .github/workflows/
directory and configure it with the following content. In the workflows
section, set the name of the workflow file for the build.
name: Slack Build Notifier
on:
workflow_run:
workflows:
- Build and deploy to Kuroco front
types: [completed]
jobs:
on-success:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
steps:
- uses: actions/checkout@v2
- name: Send GitHub Action trigger data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Build succeeded"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "GitHub Actions: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Author: <https://github.com/${{ github.event.sender.login }}|@${{ github.event.sender.login }}>"
}
]
}
]
}
env:
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_INCOMING_WEBHOOK_URL }}
on-failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' }}
steps:
- uses: actions/checkout@v2
- name: Send GitHub Action trigger data to Slack workflow
id: slack
uses: slackapi/slack-github-action@v1.23.0
with:
payload: |
{
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "Build failed"
}
},
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "GitHub Actions: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}"
}
},
{
"type": "context",
"elements": [
{
"type": "mrkdwn",
"text": "Author: <https://github.com/${{ github.event.sender.login }}|@${{ github.event.sender.login }}>"
}
]
}
]
}
env:
SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_INCOMING_WEBHOOK_URL }}
When the notification is successful, it will be sent to Slack as shown below.
Support
If you have any other questions, please contact us or check out Our Slack Community.