Skip to content

ci(e2e): retry provider E2E step on transient runner network failures - #125

Merged
ClaudiaFang merged 1 commit into
mainfrom
claude/retry-e2e-network-flake
Aug 14, 2026
Merged

ci(e2e): retry provider E2E step on transient runner network failures#125
ClaudiaFang merged 1 commit into
mainfrom
claude/retry-e2e-network-flake

Conversation

@ClaudiaFang

Copy link
Copy Markdown
Member

Summary

  • Today's main CI failure (run 31770197590) was a bare getaddrinfo ENOTFOUND gitlab.com mid-suite — the self-hosted runner's own DNS resolver failing a lookup, not a GitLab outage or a bug in sync-manager.ts/gitlab-service.ts (a real outage/rate-limit would show up as a connection timeout or HTTP 5xx/429, not a failed name lookup).
  • Wraps the "Run provider E2E" step in nick-fields/retry@v4 (pinned by SHA, matching this workflow's convention) so a one-off network blip gets one automatic retry (max_attempts: 2) instead of blocking CI/release.
  • Safe to retry the whole step from scratch: each E2E suite's runId/branch paths are randomized per vitest process invocation, so a failed attempt's partial remote state never collides with the retry — a genuine test/product failure still fails identically on both attempts and exhausts the retries (doesn't mask real bugs).

Test plan

  • npx eslint . — 0 errors (via pre-commit hook)
  • npm run build (incl. Obsidian 1.11.0 compat typecheck) — passes (via pre-commit hook)
  • .github/workflows/ci.yml validated as parseable YAML (python3 -c "import yaml; yaml.safe_load(open('.github/workflows/ci.yml'))")
  • Watch this PR's own E2E / gitlab etc. jobs run green (CI itself exercises the new retry wrapper)

🤖 Generated with Claude Code

Today's CI failure on main (run 31770197590) was a bare `getaddrinfo
ENOTFOUND gitlab.com` mid-suite -- the self-hosted runner's own DNS
resolver failing a lookup, not a GitLab outage or a product bug (a real
outage/rate-limit would show up as a connection timeout or HTTP 5xx/429,
not a failed name lookup). Wrap the vitest step in nick-fields/retry so a
one-off network blip gets one automatic retry instead of blocking
CI/release. Safe to retry the whole step from scratch: each suite's
runId/branch paths are randomized per vitest process invocation, so a
failed attempt's partial remote state never collides with the retry --
a genuine test/product failure still fails identically and exhausts
the retries.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@ClaudiaFang
ClaudiaFang merged commit 6fc3d6b into main Aug 14, 2026
22 of 30 checks passed
@ClaudiaFang
ClaudiaFang deleted the claude/retry-e2e-network-flake branch August 14, 2026 16:16
@ClaudiaFang

Copy link
Copy Markdown
Member Author

🎉 This PR is included in version 1.5.9 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant