diff --git a/.github/workflows/slack-notifications.yml b/.github/workflows/slack-notifications.yml index ce8696608f..aa94445085 100644 --- a/.github/workflows/slack-notifications.yml +++ b/.github/workflows/slack-notifications.yml @@ -6,6 +6,22 @@ name: Slack Notifications on: + workflow_run: + workflows: + - Code Coverage Report + - Coding Standards + - End-to-end Tests + - JavaScript Tests + - PHP Compatibility + - PHPUnit Tests + - Test NPM + - Test old branches + types: + - completed + branches: + - '[3-4].[0-9]' + - '5.[0-8]' + workflow_call: secrets: SLACK_GHA_SUCCESS_WEBHOOK: @@ -21,6 +37,9 @@ on: description: 'The Slack webhook URL for a failed build.' required: true +env: + CURRENT_BRANCH: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_branch || github.ref_name }} + jobs: # Gathers the details needed for Slack notifications. # @@ -28,8 +47,11 @@ jobs: # submit data to Slack webhook URLs configured to post messages. # # Performs the following steps: + # - Retrieves the workflow ID (if necessary). + # - Retrieves the workflow URL (if necessary). # - Retrieves the previous workflow run and stores its conclusion. # - Sets the previous conclusion as an output. + # - Prepares the commit message. # - Constructs and stores a message payload as an output. prepare: name: Prepare notifications @@ -42,6 +64,7 @@ jobs: steps: - name: Get the workflow ID id: current-workflow-id + if: ${{ github.event_name == 'push' }} uses: actions/github-script@441359b1a30438de65712c2fbca0abe4816fa667 # v5.0.0 with: script: | @@ -55,6 +78,7 @@ jobs: - name: Get the workflow URL id: current-workflow-url uses: actions/github-script@441359b1a30438de65712c2fbca0abe4816fa667 # v5.0.0 + if: ${{ github.event_name == 'push' }} with: script: | const workflow_run = await github.rest.actions.getWorkflowRun({ @@ -72,8 +96,8 @@ jobs: const previous_runs = await github.rest.actions.listWorkflowRuns({ owner: '${{ github.repository_owner }}', repo: 'wordpress-develop', - workflow_id: ${{ steps.current-workflow-id.outputs.result }}, - branch: '${{ github.ref_name }}', + workflow_id: ${{ github.event_name == 'workflow_run' && github.event.workflow_run.workflow_id || steps.current-workflow-id.outputs.result }}, + branch: '${{ env.CURRENT_BRANCH }}', per_page: 1, page: 2, }); @@ -87,21 +111,21 @@ jobs: id: commit-message run: | COMMIT_MESSAGE=$(cat <<'EOF' | awk 'NR==1' | sed 's/`/\\`/g' | sed 's/\"/\\\\"/g' - ${{ github.event.head_commit.message }} + ${{ github.event_name == 'workflow_run' && github.event.workflow_run.head_commit.message || github.event.head_commit.message }} EOF ) echo "::set-output name=commit_message_escaped::${COMMIT_MESSAGE}" - name: Construct payload and store as an output id: create-payload - run: echo "::set-output name=payload::{\"workflow_name\":\"${{ github.workflow }}\",\"ref_name\":\"${{ github.ref_name }}\",\"run_url\":\"${{ steps.current-workflow-url.outputs.result }}\",\"commit_message\":\"${{ steps.commit-message.outputs.commit_message_escaped }}\"}" + run: echo "::set-output name=payload::{\"workflow_name\":\"${{ github.workflow }}\",\"ref_name\":\"${{ env.CURRENT_BRANCH }}\",\"run_url\":\"${{ github.event_name == 'workflow_run' && github.event.workflow_run.html_url || steps.current-workflow-url.outputs.result }}\",\"commit_message\":\"${{ steps.commit-message.outputs.commit_message_escaped }}\"}" # Posts notifications when a workflow fails. failure: name: Failure notifications runs-on: ubuntu-latest needs: [ prepare ] - if: ${{ failure() }} + if: ${{ github.event_name == 'push' && failure() || github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'failure' }} steps: - name: Post failure notifications to Slack @@ -116,7 +140,7 @@ jobs: name: Fixed notifications runs-on: ubuntu-latest needs: [ prepare ] - if: ${{ needs.prepare.outputs.previous_conclusion == 'failure' && success() }} + if: ${{ needs.prepare.outputs.previous_conclusion == 'failure' && ( github.event_name == 'push' && success() || github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' ) }} steps: - name: Post failure notifications to Slack @@ -131,7 +155,7 @@ jobs: name: Success notifications runs-on: ubuntu-latest needs: [ prepare ] - if: ${{ success() }} + if: ${{ github.event_name == 'push' && success() || github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'success' }} steps: - name: Post success notifications to Slack @@ -146,7 +170,7 @@ jobs: name: Cancelled notifications runs-on: ubuntu-latest needs: [ prepare ] - if: ${{ cancelled() }} + if: ${{ github.event_name == 'push' && cancelled() || github.event_name == 'workflow_run' && github.event.workflow_run.conclusion == 'cancelled' }} steps: - name: Post cancelled notifications to Slack