This is an automated email from the ASF dual-hosted git repository.
potiuk pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/airflow.git
The following commit(s) were added to refs/heads/main by this push:
new 23d63c2e1d7 Fix Slack failure alerts going silent when several jobs
fail (#70988)
23d63c2e1d7 is described below
commit 23d63c2e1d7b7ce43716d1d15de88b489e467b68
Author: PoAn Yang <[email protected]>
AuthorDate: Thu Aug 13 21:07:43 2026 +0800
Fix Slack failure alerts going silent when several jobs fail (#70988)
Signed-off-by: PoAn Yang <[email protected]>
---
.github/workflows/ci-amd.yml | 11 +++++++----
.github/workflows/ci-arm.yml | 11 +++++++----
2 files changed, 14 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/ci-amd.yml b/.github/workflows/ci-amd.yml
index c1a298a0818..d1dd65c08df 100644
--- a/.github/workflows/ci-amd.yml
+++ b/.github/workflows/ci-amd.yml
@@ -1217,6 +1217,9 @@ jobs:
echo "failed-jobs<<EOF" >> "${GITHUB_OUTPUT}"
echo "${FAILED_JOBS}" >> "${GITHUB_OUTPUT}"
echo "EOF" >> "${GITHUB_OUTPUT}"
+ # A literal newline would end the double-quoted YAML scalar the
Slack payload
+ # interpolates job names into, and the action would reject the whole
payload.
+ echo "failed-jobs-text=${FAILED_JOBS//$'\n'/\\n}" >>
"${GITHUB_OUTPUT}"
if [[ -n "${FAILED_JOBS}" ]]; then
echo "has-failures=true" >> "${GITHUB_OUTPUT}"
else
@@ -1251,12 +1254,12 @@ jobs:
# yamllint disable rule:line-length
payload: |
channel: "internal-airflow-ci-cd"
- text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
+ text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs-text
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
blocks:
- type: "section"
text:
type: "mrkdwn"
- text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
+ text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs-text }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
# yamllint enable rule:line-length
- name: "Notify Slack (still not fixed)"
if: steps.notification.outputs.action == 'notify_reminder'
@@ -1267,12 +1270,12 @@ jobs:
# yamllint disable rule:line-length
payload: |
channel: "internal-airflow-ci-cd"
- text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
+ text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs-text
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
blocks:
- type: "section"
text:
type: "mrkdwn"
- text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
+ text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs-text }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
# yamllint enable rule:line-length
- name: "Notify Slack (all tests passing)"
if: steps.notification.outputs.action == 'notify_recovery'
diff --git a/.github/workflows/ci-arm.yml b/.github/workflows/ci-arm.yml
index 0764ee4496d..a4a4355b556 100644
--- a/.github/workflows/ci-arm.yml
+++ b/.github/workflows/ci-arm.yml
@@ -1206,6 +1206,9 @@ jobs:
echo "failed-jobs<<EOF" >> "${GITHUB_OUTPUT}"
echo "${FAILED_JOBS}" >> "${GITHUB_OUTPUT}"
echo "EOF" >> "${GITHUB_OUTPUT}"
+ # A literal newline would end the double-quoted YAML scalar the
Slack payload
+ # interpolates job names into, and the action would reject the whole
payload.
+ echo "failed-jobs-text=${FAILED_JOBS//$'\n'/\\n}" >>
"${GITHUB_OUTPUT}"
if [[ -n "${FAILED_JOBS}" ]]; then
echo "has-failures=true" >> "${GITHUB_OUTPUT}"
else
@@ -1240,12 +1243,12 @@ jobs:
# yamllint disable rule:line-length
payload: |
channel: "internal-airflow-ci-cd"
- text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
+ text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs-text
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
blocks:
- type: "section"
text:
type: "mrkdwn"
- text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
+ text: "🚨 Failure Alert: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs-text }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
# yamllint enable rule:line-length
- name: "Notify Slack (still not fixed)"
if: steps.notification.outputs.action == 'notify_reminder'
@@ -1256,12 +1259,12 @@ jobs:
# yamllint disable rule:line-length
payload: |
channel: "internal-airflow-ci-cd"
- text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
+ text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on branch *${{ github.ref_name
}}*\n\nFailing jobs:\n${{ steps.get-failures.outputs.failed-jobs-text
}}\n\n*Details:* <https://github.com/${{ github.repository }}/actions/runs/${{
github.run_id }}|View the failure log>"
blocks:
- type: "section"
text:
type: "mrkdwn"
- text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
+ text: "🚨🔁 Still not fixed: Scheduled CI (${{
needs.build-info.outputs.platform }}) on *${{ github.ref_name }}*\n\nFailing
jobs:\n${{ steps.get-failures.outputs.failed-jobs-text }}\n\n*Details:*
<https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id
}}|View the failure log>"
# yamllint enable rule:line-length
- name: "Notify Slack (all tests passing)"
if: steps.notification.outputs.action == 'notify_recovery'