From 5431a3a2d014f99c28ceb0e49efd514fa4b27a97 Mon Sep 17 00:00:00 2001 From: Gang Wu Date: Tue, 9 Jun 2026 17:48:41 +0800 Subject: [PATCH] fix: avoid stale gh run watch in RC release script Allow release_rc.sh to resume from an existing GitHub Actions run by setting RELEASE_RUN_ID, and add RELEASE_WATCH=0 to poll run/job status with plain gh run view output instead of gh run watch. This avoids getting stuck on stale gh run watch terminal output while keeping the default release flow unchanged. --- dev/release/release_rc.sh | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/dev/release/release_rc.sh b/dev/release/release_rc.sh index 021f64a11..1e13e5260 100755 --- a/dev/release/release_rc.sh +++ b/dev/release/release_rc.sh @@ -44,6 +44,8 @@ rc=$2 : "${RELEASE_PUSH_TAG:=${RELEASE_DEFAULT}}" : "${RELEASE_SIGN:=${RELEASE_DEFAULT}}" : "${RELEASE_UPLOAD:=${RELEASE_DEFAULT}}" +: "${RELEASE_WATCH:=${RELEASE_DEFAULT}}" +: "${RELEASE_WATCH_INTERVAL:=30}" cd "${SOURCE_TOP_DIR}" @@ -81,7 +83,7 @@ if [ "${RELEASE_SIGN}" -gt 0 ]; then repository="${repository%.git}" echo "Looking for GitHub Actions workflow on ${repository}:${rc_tag}" - run_id="" + run_id="${RELEASE_RUN_ID:-}" while [ -z "${run_id}" ]; do echo "Waiting for run to start..." run_id=$(gh run list \ @@ -93,7 +95,33 @@ if [ "${RELEASE_SIGN}" -gt 0 ]; then done echo "Found GitHub Actions workflow with ID: ${run_id}" - gh run watch --repo "${repository}" --exit-status "${run_id}" + if [ "${RELEASE_WATCH}" -gt 0 ]; then + gh run watch --repo "${repository}" --exit-status "${run_id}" + else + while true; do + run_status=$(gh run view \ + --repo "${repository}" \ + --json 'status,conclusion' \ + --jq '.status + " " + (.conclusion // "")' \ + "${run_id}") + echo "$(date -u '+%Y-%m-%dT%H:%M:%SZ') GitHub Actions workflow status: ${run_status}" + gh run view \ + --repo "${repository}" \ + --json jobs \ + --jq '.jobs[] | " " + .name + ": " + .status + " " + (.conclusion // "")' \ + "${run_id}" + case "${run_status}" in + "completed success") + break + ;; + completed\ *) + echo "GitHub Actions workflow did not complete successfully: ${run_status}" + exit 1 + ;; + esac + sleep "${RELEASE_WATCH_INTERVAL}" + done + fi mkdir -p "${rc_id}"