mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Add automation when issue labeled area/alerting (#51245)
This now results in a message being sent to a Slack channel used by the Alerting team at Grafana Labs.
This commit is contained in:
parent
ef53a49896
commit
9fac806b6c
10
.github/teams.yml
vendored
Normal file
10
.github/teams.yml
vendored
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
# The first keys are labels used on issues. All fields are optional.
|
||||||
|
# Example
|
||||||
|
test:
|
||||||
|
# channel-label is used to send a message to a specific channel
|
||||||
|
# when the label "test" is added to an issue.
|
||||||
|
channel-label: CXXXXXXXXXX
|
||||||
|
|
||||||
|
# Alerting team
|
||||||
|
area/alerting:
|
||||||
|
channel-label: C02B9MXQE0J
|
56
.github/workflows/issue-labeled.yml
vendored
Normal file
56
.github/workflows/issue-labeled.yml
vendored
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
name: Notify Slack channel based on issue label
|
||||||
|
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [labeled]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
notify:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout repository
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
|
||||||
|
- name: "Determine which team to notify"
|
||||||
|
run: |
|
||||||
|
# Default to null values.
|
||||||
|
CHANNEL="null"
|
||||||
|
|
||||||
|
echo "${{ github.event.label.name }} label added"
|
||||||
|
export CURRENT_LABEL="${{ github.event.label.name }}" # Enable the use of the label in yq evaluations
|
||||||
|
# yq is installed by default in ubuntu-latest
|
||||||
|
if [[ $(yq e 'keys | .[] | select(. == env(CURRENT_LABEL))' .github/teams.yml ) ]]; then
|
||||||
|
# Check if we have a channel set to notify on comments.
|
||||||
|
if [[ $(yq '.[env(CURRENT_LABEL)] | has("channel-label")' .github/teams.yml ) == true ]]; then
|
||||||
|
CHANNEL=$(yq '.[env(CURRENT_LABEL)].channel-label' .github/teams.yml)
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# set environment for next step
|
||||||
|
echo "CHANNEL=${CHANNEL}" >> $GITHUB_ENV
|
||||||
|
|
||||||
|
# Debug logging
|
||||||
|
echo "Ready to send issue to channel ID ${CHANNEL}"
|
||||||
|
|
||||||
|
- name: "Prepare payload"
|
||||||
|
uses: frabert/replace-string-action@v2.0
|
||||||
|
id: preparePayload
|
||||||
|
with:
|
||||||
|
# replace double quotes with single quotes to avoid breaking the JSON payload sent to Slack
|
||||||
|
string: ${{ github.event.issue.title }}
|
||||||
|
pattern: '"'
|
||||||
|
replace-with: "'"
|
||||||
|
flags: 'g'
|
||||||
|
|
||||||
|
- name: "Send Slack notification"
|
||||||
|
uses: slackapi/slack-github-action@v1.14.0
|
||||||
|
with:
|
||||||
|
payload: >
|
||||||
|
{
|
||||||
|
"icon_emoji": ":grafana:",
|
||||||
|
"username": "Grafana issue labeled",
|
||||||
|
"text": "Issue \"${{ steps.preparePayload.outputs.replaced }}\" labeled \"${{ github.event.label.name }}\": ${{ github.event.issue.html_url }}",
|
||||||
|
"channel": "${{ env.CHANNEL }}"
|
||||||
|
}
|
||||||
|
env:
|
||||||
|
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
|
Loading…
Reference in New Issue
Block a user