Skip to content

Commit 2be32f3

Browse files
committed
Send message to Slack on failure via Workflow Builder
1 parent 7e27ae6 commit 2be32f3

File tree

1 file changed

+40
-0
lines changed

1 file changed

+40
-0
lines changed

.github/workflows/multinode.yml

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ on:
6666
ssh_key:
6767
description: SSH public key to authorise on Ansible control host
6868
type: string
69+
enable_slack_alert:
70+
description: Whether to send a Slack message to a channel if the job fails
71+
type: boolean
72+
default: false
6973
secrets:
7074
KAYOBE_VAULT_PASSWORD_CI_MULTINODE:
7175
required: true
@@ -75,6 +79,8 @@ on:
7579
required: true
7680
OS_APPLICATION_CREDENTIAL_SECRET:
7781
required: true
82+
SLACK_WEBHOOK_URL:
83+
required: true
7884

7985
jobs:
8086
multinode:
@@ -359,13 +365,47 @@ jobs:
359365
if: ${{ always() && steps.config_ach.outcome == 'success' }}
360366

361367
- name: Upload test result artifacts
368+
id: upload-results
362369
uses: actions/upload-artifact@v4
363370
with:
364371
name: test-results-multinode-${{ inputs.os_distribution }}-${{ inputs.os_release }}-${{ inputs.neutron_plugin }}${{ inputs.upgrade && '-upgrade' || '' }}
365372
path: |
366373
${{ github.workspace }}/logs/
367374
if: ${{ always() && steps.config_ach.outcome == 'success' }}
368375

376+
- name: Send message to Slack via Workflow Builder
377+
uses: slackapi/[email protected]
378+
with:
379+
payload: |
380+
{
381+
"channel-id": "${{ env.SLACK_CHANNEL_ID }}",
382+
"inputs": "${{ env.INPUTS }}",
383+
"message": "${{ env.MESSAGE }}",
384+
"results-url": "${{ env.RESULTS_URL }}",
385+
"workflow-url": "${{ env.WORKFLOW_URL }}"
386+
}
387+
env:
388+
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK_URL }}
389+
# #release-train-alerts
390+
SLACK_CHANNEL_ID: C03B28HRP53
391+
INPUTS: >-
392+
name: ${{ inputs.multinode_name }}\n
393+
controllers: ${{ inputs.multinode_controller_count }}\n
394+
computes: ${{ inputs.multinode_compute_count }}\n
395+
storage: ${{ inputs.multinode_storage_count }}\n
396+
os_distribution: ${{ inputs.os_distribution }}\n
397+
os_release: ${{ inputs.os_release }}\n
398+
ssh_username: ${{ inputs.ssh_username }}\n
399+
neutron_plugin: ${{ inputs.neutron_plugin }}\n
400+
stackhpc_kayobe_config_version: ${{ inputs.stackhpc_kayobe_config_version }}\n
401+
stackhpc_kayobe_config_previous_version: ${{ inputs.stackhpc_kayobe_config_previous_version }}\n
402+
terraform_kayobe_multinode_version: ${{ inputs.terraform_kayobe_multinode_version }}\n
403+
upgrade: ${{ inputs.upgrade }}\n
404+
MESSAGE: "Multinode workflow failed :sob:"
405+
RESULTS_URL: "${{ steps.upload-results.outputs.artifact-url || 'N/A' }}"
406+
WORKFLOW_URL: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
407+
if: ${{ failure() && inputs.enable_slack_alert }}
408+
369409
- name: Break on failure
370410
run: |
371411
sleep ${{ inputs.break_duration }}m

0 commit comments

Comments
 (0)