From b8e5aa76819d66fced75d677aa562109b40b67e8 Mon Sep 17 00:00:00 2001 From: Matthew Grossman Date: Thu, 15 Oct 2026 08:59:31 -0700 Subject: [PATCH 1/2] 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 --- .github/workflows/release-tag.yml | 26 ++++++++++++++++++++++++++ CI.md | 2 ++ 2 files changed, 28 insertions(+) diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 126c708d27..5c24485b95 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -830,6 +830,32 @@ 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) }} + 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 + + message=":white_check_mark: OpenShell prerelease ${RELEASE_TAG} succeeded (attempt ${GITHUB_RUN_ATTEMPT})." + jq -n --arg text "${message}" --arg run_url "${RUN_URL}" \ + '{text: ($text + "\n<" + $run_url + "|View release run>"), 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] diff --git a/CI.md b/CI.md index fc9547720f..6a45aed11f 100644 --- a/CI.md +++ b/CI.md @@ -274,6 +274,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. From 716b300a35aefa2f14d6e89e760e2e6ad93d69c9 Mon Sep 17 00:00:00 2001 From: Matthew Grossman Date: Thu, 15 Oct 2026 09:20:27 -0700 Subject: [PATCH 2/2] ci(release): link the prerelease tag in the success notification Signed-off-by: Matthew Grossman --- .github/workflows/release-tag.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release-tag.yml b/.github/workflows/release-tag.yml index 5c24485b95..5ee1268091 100644 --- a/.github/workflows/release-tag.yml +++ b/.github/workflows/release-tag.yml @@ -843,6 +843,7 @@ jobs: 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 @@ -850,9 +851,9 @@ jobs: exit 0 fi - message=":white_check_mark: OpenShell prerelease ${RELEASE_TAG} succeeded (attempt ${GITHUB_RUN_ATTEMPT})." - jq -n --arg text "${message}" --arg run_url "${RUN_URL}" \ - '{text: ($text + "\n<" + $run_url + "|View release run>"), unfurl_links: false, unfurl_media: false}' | + 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}"