Skip to content

๐Ÿ“ฎ Slack Message Broker #13016

๐Ÿ“ฎ Slack Message Broker

๐Ÿ“ฎ Slack Message Broker #13016

# This workflow is triggered whenever any of the workflows listed in on.workflow_run.workflows
# has been cancelled or has failed, and will send a message to the plutus-ci channel.
name: "๐Ÿ“ฎ Slack Message Broker"
on:
workflow_dispatch: # Only used for testing
status:
check_run:
workflow_run:
types: [completed, requested, in_progress]
workflows:
- "๐Ÿ”— Broken Links"
- "๐Ÿ—ฝ Cardano Constitution Tests"
- "๐Ÿ’ฐ Cost Model Benchmark"
- "๐Ÿฆ• Docusaurus Site"
- "๐Ÿ“œ Haddock Site"
- "๐Ÿฉบ Longitudinal Benchmark"
- "๐Ÿš€ Manual Benchmark"
- "๐Ÿ”ฎ Metatheory Site"
- "๐ŸŒ˜ Nightly Testsuite"
- "๐Ÿ“ Papers & Specs"
- "๐Ÿ›๏ธ PlutusTx Template"
jobs:
Send:
runs-on: [ubuntu-latest]
steps:
- name: Prepare Slack Message
uses: actions/github-script@main
id: prepare-slack-message
with:
script: |
const event = context.payload;
console.log(github);
let message = "<unknown>";
let shouldSendMessage = true;
function handleWorkflowDispatchEvent() {
}
function handleStatusEvent() {
}
function handleCheckRunEvent() {
}
function handleWorkflowRunEvent() {
const actor = context.actor;
const name = event.workflow_run.name;
const url = event.workflow_run.html_url;
const status = event.workflow_run.status;
const conclusion = event.workflow_run.conclusion;
const failureConclusions = [ "failure", "null", "cancelled", "action_required", "neutral", "timed_out" ];
if (conclusion == "") {
message = `${name} \`${status}\` โณ <${url}|View Logs>`;
shouldSendMessage = false;
}
else if (conclusion == "success") {
message = `${name} \`${conclusion}\` โœ… <${url}|View Logs>`;
shouldSendMessage = false;
}
else if (conclusion == "skipped") {
message = `${name} \`${conclusion}\` โฉ <${url}|View Logs>`;
shouldSendMessage = false;
}
else if (failureConclusions.includes(conclusion)) {
message = `${name} \`${conclusion}\` โŒ <${url}|View Logs> @${actor}`;
shouldSendMessage = true;
}
else {
message = `${name} \`${conclusion}\` โ‰๏ธ <${url}|View Logs> Unknown Conclusion @${actor}`;
shouldSendMessage = true;
}
}
if (event.eventName == 'workflow_dispatch') {
handleWorkflowDispatchEvent();
}
else if (event.eventName == 'status') {
handleStatusEvent();
}
else if (event.eventName == 'check_run') {
handleCheckRunEvent();
}
else if (event.eventName == 'workflow_run') {
handleWorkflowRunEvent();
}
else {
core.setFailed(`Unknown Event: ${event.eventName}`);
}
console.log(`message: ${message}`);
console.log(`shouldSendMessage: ${shouldSendMessage}`);
core.setOutput("message", message);
core.setOutput("shouldSendMessage", shouldSendMessage);
- name: Notify Slack
uses: slackapi/[email protected]
if: ${{ success() && steps.prepare-slack-message.outputs.shouldSendMessage == 'true' }}
env:
SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}
with:
# channel-id: C07A1GSNZEE # plutus-ci
channel-id: C07PZQW3CA2 # plutus-ci-test
payload: |
{
"text": "${{ steps.prepare-slack-message.outputs.message }}",
"blocks": [
{
"type": "section",
"text": {
"type": "mrkdwn",
"text": "${{ steps.prepare-slack-message.outputs.message }}"
}
}
]
}