From e7026bcfafc0be9f8993c3d1b620b3f45fc61b7b Mon Sep 17 00:00:00 2001 From: slydlake Date: Fri, 26 Jun 2026 00:23:14 +0200 Subject: [PATCH] ci: handle zero-checks case in automerge wait loop When GitHub does not deliver the pull_request event to the validation workflows (intermittent webhook drop), the wait loop would spin until the 25-minute deadline with total=0 and then fail. Add a 3-minute grace period: if no checks register within that window, proceed with the merge since release PRs only touch version and changelog, not chart templates. Co-Authored-By: Claude Sonnet 4.6 --- .github/workflows/release-please-automerge.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/release-please-automerge.yml b/.github/workflows/release-please-automerge.yml index a0c164a..3c7614b 100644 --- a/.github/workflows/release-please-automerge.yml +++ b/.github/workflows/release-please-automerge.yml @@ -138,6 +138,11 @@ jobs: set -euo pipefail self="Release Please Auto-merge" # never wait on ourselves deadline=$(( $(date +%s) + 1500 )) # 25 min budget for CI + # Grace period: if no checks register within 3 min, GitHub likely did not + # deliver the pull_request event to the validation workflows (intermittent + # webhook drop). Treat "still zero after grace" as "no checks required" + # and proceed — release PRs only touch version + changelog, not templates. + no_checks_grace=$(( $(date +%s) + 180 )) while :; do raw=$(gh pr checks "$PR" --json name,workflow,bucket 2>/dev/null) || true [ -n "$raw" ] || raw='[]' @@ -150,6 +155,10 @@ jobs: if [ "$total" -gt 0 ] && [ "$pending" -eq 0 ]; then echo "all checks green"; break fi + if [ "$total" -eq 0 ] && [ "$(date +%s)" -gt "$no_checks_grace" ]; then + echo "::warning::no PR checks registered after grace period — proceeding without check gate" + break + fi [ "$(date +%s)" -lt "$deadline" ] || { echo "::error::timed out waiting for checks"; exit 1; } sleep 20 done