Skip to content

Commit 3cae43b

Browse files
authored
Merge pull request #3 from stackhpc/slack
multinode: Add SSH key check and Slack alert
2 parents 467f842 + 813eca8 commit 3cae43b

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

.github/workflows/multinode.yml

Lines changed: 46 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: false
7884

7985
jobs:
8086
multinode:
@@ -93,6 +99,12 @@ jobs:
9399
exit 1
94100
if: ${{ inputs.upgrade && inputs.stackhpc_kayobe_config_previous_version == '' }}
95101

102+
- name: Fail if no SSH key is provided for break_on
103+
run: |
104+
echo "break_on is set to ${{ inputs.break_on }} but an SSH public key has not been provided"
105+
exit 1
106+
if: ${{ inputs.break_on != 'never' && inputs.ssh_key == '' }}
107+
96108
- name: Install Package
97109
uses: ConorMacBride/install-package@main
98110
with:
@@ -353,13 +365,47 @@ jobs:
353365
if: ${{ always() && steps.config_ach.outcome == 'success' }}
354366

355367
- name: Upload test result artifacts
368+
id: upload-results
356369
uses: actions/upload-artifact@v4
357370
with:
358371
name: test-results-multinode-${{ inputs.os_distribution }}-${{ inputs.os_release }}-${{ inputs.neutron_plugin }}${{ inputs.upgrade && '-upgrade' || '' }}
359372
path: |
360373
${{ github.workspace }}/logs/
361374
if: ${{ always() && steps.config_ach.outcome == 'success' }}
362375

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+
363409
- name: Break on failure
364410
run: |
365411
sleep ${{ inputs.break_duration }}m

0 commit comments

Comments
 (0)