Skip to content

ci(fleet): retry transient lane failures and fix the self-repin version SIGPIPE - #543

Merged
joshua-temple merged 1 commit into
mainfrom
ci/fleet-transient-retry-hardening
Jul 9, 2026
Merged

joshua-temple merged 1 commit into
mainfrom
ci/fleet-transient-retry-hardening

Conversation

@joshua-temple

Copy link
Copy Markdown
Collaborator

What

Makes the fleet resilient to the two transient flakes that have hard-failed publishing runs.

  • Retry coverage (fleet-e2e.yaml): the primary, dependents, and remainder lanes ran with no retry, so a transient hosted-runner non-acquisition cancel (or a broken pipe) hard-failed the fleet with no second chance. Set retry-attempts: 2 on those lanes (heavy already had it). The dispatch-suite loop already treats a cancelled run as retryable, so a runner-non-acquisition cancel now consumes a retry instead of failing.
  • Self-repin SIGPIPE (fleet-repin/action.yaml): the step read the installed version with cascade version | head -n1 | awk. cascade version prints three lines from separate writes; head closing the pipe after line one races the later writes into a broken pipe (exit 141) that pipefail promotes to a step failure - it hit release-only and single-env. Capture the output first, then split it without a pipe.

Verification

go build, go test ./... (2686), golangci-lint, and actionlint on the changed workflow all clean; shellcheck clean on the new snippet. No test pinned the retry values. This is the fleet resilience the goal needs so the publishing run reaches green reliably.

…on SIGPIPE

The fleet fan-out lanes primary, dependents, and remainder ran with no retry, so a transient GitHub hosted-runner non-acquisition (the job not acquired by a runner, cancelled after fifteen minutes) or a broken pipe hard-failed the whole fleet with no second chance. Set retry-attempts to two on those lanes to match the heavy lane; the dispatch-suite loop already treats a cancelled run as retryable. Also fix an intermittent broken-pipe failure in the fleet-repin self-repin step: it read the installed version with cascade version piped into head, and because cascade version prints three lines from separate writes, head closing the pipe after the first line races the later writes into a broken pipe that pipefail promotes to a step failure. Capture the output first and split it without a pipe.

Signed-off-by: Joshua Temple <joshua.temple@stablekernel.com>
@joshua-temple
joshua-temple merged commit bcb2409 into main Jul 9, 2026
16 checks passed
@joshua-temple
joshua-temple deleted the ci/fleet-transient-retry-hardening branch July 9, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant