fix: add retry loop to CI wget for update-kustomize-tag #91
No reviewers
Labels
No labels
domain:backend
domain:devops
domain:frontend
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
forgejo_admin/pal-e-docs-app!91
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "230-ci-wget-retry"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
BusyBox wget has no built-in retry flags. Transient forgejo-http connection failures cause the kustomize tag update step to fail silently. This wraps the wget call in a 5-attempt retry loop with 5s backoff and a fatal exit if the script never downloads.
Changes
.woodpecker.yaml: Wrapped thewgetcall in theupdate-kustomize-tagstep with a retry loop (5 attempts, 5s sleep between retries, fatal exit on total failure)Test Plan
yaml.safe_loadupdate-kustomize-tagstep should download the script successfully (or retry gracefully on transient failure)Related
QA Review
Scope: 1 file changed (.woodpecker.yaml), 10 additions / 2 deletions. CI-only change, no app code affected.
Findings
FIXED -- zero-byte file edge case: BusyBox
wget -Ocreates the output file before downloading. If all 5 attempts fail, the zero-byte file persists andtest -fwould pass, causingshto run an empty script silently. Fixed incbd68edby switching totest -s(exists AND non-zero size).Retry loop logic: Correct.
&& breakexits on first successful download. Failed attempts log the attempt number and sleep 5s. Thetest -sguard after the loop catches total failure with a clear FATAL message andexit 1.YAML validity: Confirmed via
yaml.safe_load.Existing flags preserved: The wget URL and
-Oflag are unchanged from the original. No auth header needed for this repo (public raw endpoint over cluster DNS).No regressions: The
sh /tmp/update-kustomize-tag.shinvocation is unchanged.depends_onandwhenguards are unchanged.VERDICT: APPROVED