From 2796a5a12efcab87e09e86fd863113c1c6c0f9b0 Mon Sep 17 00:00:00 2001 From: mignot Date: Tue, 15 Sep 2026 19:23:57 +0200 Subject: [PATCH 1/2] fix(trigger-coolify-deploy): retry PR-preview trigger on 2xx not-found body Coolify's deploy-trigger endpoint can return HTTP 200 with the "not found" error embedded in the JSON body (no deployment_uuid) instead of a non-2xx status, while a PR preview resource is still being provisioned. The retry loop only retried on non-2xx responses, so a 2xx/not-found response broke out of the loop and hard-failed immediately on the first attempt instead of retrying for up to PREVIEW_NOT_FOUND_TIMEOUT_SECONDS. Co-Authored-By: Claude Sonnet 5 --- .github/actions/trigger-coolify-deploy/action.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/actions/trigger-coolify-deploy/action.yml b/.github/actions/trigger-coolify-deploy/action.yml index 39ad8f8..85e161c 100644 --- a/.github/actions/trigger-coolify-deploy/action.yml +++ b/.github/actions/trigger-coolify-deploy/action.yml @@ -268,7 +268,7 @@ runs: raw=$(trigger_deploy) http_code=$(printf '%s' "$raw" | tail -1) response=$(printf '%s' "$raw" | sed '$d') - if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ]; then + if [ "$http_code" -ge 200 ] && [ "$http_code" -lt 300 ] && printf '%s' "$response" | jq -e '.deployments[0].deployment_uuid' >/dev/null 2>&1; then break fi if printf '%s' "$response" | grep -qi "not found"; then From d031b4365a2cd0c0d8ae7f0d648cff0d45b9b3d9 Mon Sep 17 00:00:00 2001 From: mignot Date: Tue, 15 Sep 2026 19:24:13 +0200 Subject: [PATCH 2/2] docs(changelog): note 2xx not-found retry fix under Unreleased Co-Authored-By: Claude Sonnet 5 --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2f52cf..361bd66 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -52,6 +52,10 @@ All contributors (including maintainers) should update `CHANGELOG.md` when creat ## [Unreleased] +### Fixed + +- **trigger-coolify-deploy**: the PR-preview deploy trigger's retry loop now also retries when Coolify returns HTTP 200 with a "not found" error embedded in the JSON body (no `deployment_uuid`) instead of a non-2xx status. Previously this broke out of the retry loop on the first attempt and hard-failed instead of retrying for up to `PREVIEW_NOT_FOUND_TIMEOUT_SECONDS` while the preview resource was still being provisioned. + ## [4.3.3] - 2026-09-15 ### Fixed