Add retries to network calls in Buildkite CI scripts#15451
Conversation
Transient network failures (timeouts, connection resets, HTTP 429/5xx) in the CI scripts fail whole jobs outright because many network operations run without any retry protection. Add retries to the unprotected call sites: - Extract the retry() helper from common.sh into retry.sh so scripts can use it without common.sh's side effects (Docker restart, package manager tweaks). - curl: use --retry (plus -f where an HTTP error page could previously be consumed as valid output, e.g. as the kind/kubectl binary or the DRA manifest version). - version_qualifier.sh: fetch the qualifier once with retries instead of the unretried existence-check + fetch pair; a 404 still fast-fails into the empty qualifier. - Wrap docker pull/push/imagetools, vault reads, asdf install, and Go tool installs (bash and PowerShell) in retries. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
TL;DRThe Remediation
Investigation detailsRoot CauseThe Evidence
Validation
Follow-up
What is this? | From workflow: PR Actions Detective Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not. |
CI requires files with a shebang to be executable; all other sourced scripts under .buildkite/scripts/ already are. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This comment has been minimized.
This comment has been minimized.
💔 Build Failed
Failed CI StepsHistory
cc @swiatekm |
TL;DRThe Remediation
Investigation detailsRoot Cause
The failing pipeline runs Evidence
Verification
What is this? | From workflow: PR Buildkite Detective Give us feedback! React with 🚀 if perfect, 👍 if helpful, 👎 if not. |
|
Pinging @elastic/elastic-agent-control-plane (Team:Elastic-Agent-Control-Plane) |
What does this PR do?
Transient network failures (timeouts, connection resets, HTTP 429/5xx) in the CI scripts fail whole jobs outright because many network operations run without any retry protection. Add retries to the unprotected call sites:
Why is it important?
Failing a whole long workflow because a request to the artifacts API at the very end ran into a proxy timeout sucks.
Related issues