Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore(ci): fix workflow webhook notification and use "Kong/github-sla… #12122

Merged
merged 1 commit into from
Nov 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions .github/workflows/backport-fail-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
name: Forward failed backport alert to Slack

on:
issue_comment:
types: [created]

jobs:
check_comment:
runs-on: ubuntu-latest
if: github.event.issue.pull_request != null && contains(github.event.comment.body, 'To backport manually, run these commands in your terminal')

steps:
- name: Fetch mapping file
id: fetch_mapping
uses: actions/github-script@v6
env:
ACCESS_TOKEN: ${{ secrets.PAT }}
with:
script: |
const url = 'https://raw.githubusercontent.com/Kong/github-slack-mapping/main/mapping.json';
const headers = {Authorization: `token ${process.env.ACCESS_TOKEN}`};
const response = await fetch(url, {headers});
const mapping = await response.json();
return mapping;

- name: Generate Slack Payload
id: generate-payload
uses: actions/github-script@v6
env:
SLACK_CHANNEL: gateway-notifications
SLACK_MAPPING: "${{ steps.fetch_mapping.outputs.result }}"
with:
script: |
const pr_url = ${{ github.event.issue.pull_request.html_url }};
const slack_mapping = JSON.parse(process.env.SLACK_MAPPING);
const pr_author_github_id = ${{ github.event.issue.user.login }};
const pr_author_slack_id = slack_mapping[pr_author_github_id];
const author = pr_author_slack_id ? `<@${pr_author_slack_id}>` : pr_author_github_id;
const payload = {
text: `${pr_url} from ${author} failed to backport.`,
channel: process.env.SLACK_CHANNEL,
};
return JSON.stringify(payload);
result-encoding: string

- name: Send Slack Message
uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
with:
payload: ${{ steps.generate-payload.outputs.result }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_GATEWAY_NOTIFICATIONS_WEBHOOK }}
39 changes: 0 additions & 39 deletions .github/workflows/master-fail-bot

This file was deleted.

59 changes: 59 additions & 0 deletions .github/workflows/release-and-tests-fail-bot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
name: Notify Slack user on workflow failure

on:
workflow_run:
workflows: ["Package & Release", "Build & Test"]
types:
- completed
branches:
- master
- release/*
- next/*

jobs:
notify_failure:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'failure' && github.event.workflow_run.event != 'schedule' }}
steps:
- name: Fetch mapping file
id: fetch_mapping
uses: actions/github-script@v6
env:
ACCESS_TOKEN: ${{ secrets.PAT }}
with:
script: |
const url = 'https://raw.githubusercontent.com/Kong/github-slack-mapping/main/mapping.json';
const headers = {Authorization: `token ${process.env.ACCESS_TOKEN}`};
const response = await fetch(url, {headers});
const mapping = await response.json();
return mapping;

- name: Generate Slack Payload
id: generate-payload
env:
SLACK_CHANNEL: gateway-notifications
SLACK_MAPPING: "${{ steps.fetch_mapping.outputs.result }}"
uses: actions/github-script@v6
with:
script: |
const workflow_name = "${{ github.event.workflow_run.name }}";
const repo_name = "${{ github.event.workflow_run.repository.full_name }}";
const branch_name = "${{ github.event.workflow_run.head_branch }}";
const run_url = "${{ github.event.workflow_run.html_url }}";
const slack_mapping = JSON.parse(process.env.SLACK_MAPPING);
const actor_github_id = "${{ github.event.workflow_run.actor.login }}";
const actor_slack_id = slack_mapping[actor_github_id];
const actor = actor_slack_id ? `<@${actor_slack_id}>` : actor_github_id;
const payload = {
text: `Hello ${actor} , workflow “${workflow_name}” failed in repo: "${repo_name}", branch: "${branch_name}". Please check it: ${run_url}.`,
channel: process.env.SLACK_CHANNEL,
};
return JSON.stringify(payload);
result-encoding: string

- name: Send Slack Message
uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
with:
payload: ${{ steps.generate-payload.outputs.result }}
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_GATEWAY_NOTIFICATIONS_WEBHOOK }}
38 changes: 0 additions & 38 deletions .github/workflows/release-fail-bot.yml

This file was deleted.