ci(release): notify Slack when a prerelease succeeds (#4605)

* ci(release): notify Slack when a prerelease succeeds

Post a top-level message to the triage webhook when a prerelease completes, so recovery after failures is visible. The message omits the triage mention.

Closes #4604

Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>

* ci(release): link the prerelease tag in the success notification

Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>

---------

Signed-off-by: Matthew Grossman <mgrossman@nvidia.com>
This commit is contained in:
Matthew Grossman
2026-10-15 17:14:54 +00:00
committed by GitHub
parent 2804f68501
commit c3ca45f1dd
2 changed files with 29 additions and 0 deletions
+27
View File
@@ -646,6 +646,33 @@ jobs:
curl --fail --silent --show-error --connect-timeout 5 --max-time 15 \
--header 'Content-Type: application/json' --data-binary @- "${SLACK_WEBHOOK_URL}"
notify-prerelease-success:
name: Notify Prerelease Success
needs: [release-helm, publish-qualification]
if: success() && contains(inputs.tag || github.ref_name, '-pre.')
runs-on: ubuntu-latest
timeout-minutes: 2
permissions: {}
steps:
- name: Send Slack notification
continue-on-error: true
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_OPENSHELL_TRIAGE_WEBHOOK_URL }}
RUN_URL: ${{ format('{0}/{1}/actions/runs/{2}/attempts/{3}', github.server_url, github.repository, github.run_id, github.run_attempt) }}
TAG_URL: ${{ format('{0}/{1}/tree/{2}', github.server_url, github.repository, inputs.tag || github.ref_name) }}
run: |
set -euo pipefail
if [[ -z "${SLACK_WEBHOOK_URL}" ]]; then
echo "::notice::SLACK_OPENSHELL_TRIAGE_WEBHOOK_URL is unset; skipping Slack notification."
exit 0
fi
jq -n --arg tag "${RELEASE_TAG}" --arg tag_url "${TAG_URL}" \
--arg attempt "${GITHUB_RUN_ATTEMPT}" --arg run_url "${RUN_URL}" \
'{text: (":white_check_mark: OpenShell prerelease <" + $tag_url + "|" + $tag + "> succeeded (attempt " + $attempt + ").\n<" + $run_url + "|View release run and artifacts>"), unfurl_links: false, unfurl_media: false}' |
curl --fail --silent --show-error --connect-timeout 5 --max-time 15 \
--header 'Content-Type: application/json' --data-binary @- "${SLACK_WEBHOOK_URL}"
publish-fern-docs:
name: Sync and Publish Fern Docs
needs: [compute-versions, release, publish-sdk-typescript, release-helm, trigger-wheel-publish]
+2
View File
@@ -279,6 +279,8 @@ Failed pre-release builds send notifications via Slack using a webhook and
at-mentioning the triage engineer with a link to the failure. The webhook is
stored in the repository secret `SLACK_OPENSHELL_TRIAGE_WEBHOOK_URL` and the
mention is stored in the repository secret `SLACK_OPENSHELL_TRIAGE_MENTION`.
Successful pre-release builds post a top-level message to the same webhook
without a mention, so a recovery after failures is visible in the channel.
Notifications are non-blocking and do not affect release results; an unset
webhook skips sending; an unset mention sends without a mention.