-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #329 from stackhpc/slack-notifications
Add Slack notification to Github workflows
- Loading branch information
Showing
11 changed files
with
158 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
--- | ||
# See the "workflow builder" approach in https://github.com/slackapi/slack-github-action/. | ||
name: Slack alert | ||
description: Send an alert to a Slack channel using workflow builder | ||
inputs: | ||
inputs: | ||
description: Textual representation of workflow inputs | ||
required: false | ||
default: "N/A" | ||
type: string | ||
message: | ||
description: Slack alert message | ||
required: false | ||
default: "${{ github.workflow }}/${{ github.job }} GitHub Actions workflow failed :sob:" | ||
type: string | ||
results-url: | ||
description: URL for workflow results | ||
required: false | ||
default: "N/A" | ||
type: string | ||
# Typically this would be a secret. | ||
slack-webhook-url: | ||
description: Slack workflow builder webhook URL | ||
required: true | ||
type: string | ||
# Typically this would be a secret or variable. | ||
slack-channel-id: | ||
description: ID of Slack channel to send alert to | ||
required: true | ||
type: string | ||
runs: | ||
using: composite | ||
steps: | ||
- name: Send message to Slack via Workflow Builder | ||
uses: slackapi/[email protected] | ||
with: | ||
payload: | | ||
{ | ||
"channel-id": "${{ env.SLACK_CHANNEL_ID }}", | ||
"inputs": "${{ env.INPUTS }}", | ||
"message": "${{ env.MESSAGE }}", | ||
"results-url": "${{ env.RESULTS_URL }}", | ||
"workflow-url": "${{ env.WORKFLOW_URL }}" | ||
} | ||
env: | ||
SLACK_WEBHOOK_URL: ${{ inputs.slack-webhook-url }} | ||
SLACK_CHANNEL_ID: ${{ inputs.slack-channel-id }} | ||
INPUTS: ${{ inputs.inputs }} | ||
MESSAGE: ${{ inputs.message }} | ||
RESULTS_URL: ${{ inputs.results-url }} | ||
WORKFLOW_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
# Notifications | ||
|
||
Much of the functionality of StackHPC Release Train is built around GitHub Actions workflows. | ||
Some of these are triggered automatically based on an event such as pushing to a branch in a GitHub repository. | ||
Others are triggered manually, such as using a "workflow dispatch" from GitHub's web UI or API. | ||
|
||
Failure of a manually triggered workflow will result in an email being sent to the user who triggered the workflow. | ||
Failure of an automatically triggered workflow will result in an email being sent to the user who *created* the workflow file. | ||
This is not ideal, and makes that person a bottleneck and single point of failure. | ||
To make failures of automatically triggered workflows more visible, notifications are sent to the `#release-train-alerts` Slack channel. | ||
|
||
These notifications are implemented in the [slack-alert](https://github.com/stackhpc/stackhpc-release-train/tree/main/.github/actions/slack-alert/) GitHub action. | ||
The `slack-alert` action uses the "workflow builder" approach described in [slack-github-action](https://github.com/slackapi/slack-github-action/). | ||
Slack's [workflow builder](https://slack.com/intl/en-gb/help/articles/360035692513-Guide-to-Slack-Workflow-Builder) feature allows for flexible integration of Slack with various other services, based on various events. | ||
The [Release train status](https://slack.com/shortcuts/Ft07L987AQ91/1f20fd53512385abf199c9357071cb02) workflow has a webhook URL event trigger, with a single action that sends a message to the `#release-train-alerts` Slack channel. | ||
The Slack webhook URL is set in the `SLACK_WEBHOOK_URL` GitHub Actions secret, and the `#release-train-alerts` channel ID is set in the `SLACK_CHANNEL_ID` GitHub Actions variable. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters