Repository navigation
Conversation
The module proxy has been returning transient errors for weeks, failing builds in a way that says nothing about the code under test. Add .ci/retry.sh and give every CI job an explicit, retried download step before it builds or tests. Builds and tests stay unwrapped: the cache is warm by then, and retrying a test run would mask genuine flakes. GitHub Actions warms the cache with a package-scoped go list rather than go mod download. go-fleecedelta is a direct requirement but private, and go mod download ignores build tags, so it fails on runners without the EE credentials. The tool meta-pattern covers gotestsum and addlicense, which nothing in the tree imports. Jenkins has the credentials, so it uses go mod download, which needs no tags and covers the CE leg, the EE leg and the tool modules at once. Jenkins also warms integration-test/tools, the separate module pinning cbdinocluster, which start_cbs.py reaches for. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Contributor
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The E2E script has unresolved compatibility and retry-coverage issues.
Get a fresh assessment by requesting another Copilot review.
Pull request overview
Adds retryable Go dependency downloads across GitHub Actions, Jenkins, and integration tooling to reduce transient CI failures.
Changes:
- Adds
.ci/retry.shwith exponential backoff. - Adds retried dependency prefetching to CI, Jenkins, and integration scripts.
- Updates shell workflow triggers for
.cichanges.
File summaries
| File | Summary |
|---|---|
Jenkinsfile |
Retries toolchain and module downloads. |
jenkins-integration-build.sh |
Warms root and integration-tool modules. |
integration-test/e2e/run_e2e_tests.sh |
Prefetches CBS tooling; moderate issue: root-module downloads remain unwrapped, and critical issue: older revisions may lack .ci/retry.sh when the script is fetched from main. |
.github/workflows/shell.yml |
Tracks .ci shell-script changes. |
.github/workflows/service.yml |
Adds dependency warming before service builds. |
.github/workflows/ci.yml |
Adds module warming to Go jobs. |
.ci/retry.sh |
Provides the shared retry helper. |
Review details
- Files reviewed: 7/7 changed files
- Comments generated: 2
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
retry.sh exited 0 without running anything when called with no arguments, and died on an unbound status when RETRY_ATTEMPTS was zero or non-numeric. Reject both up front, along with a non-numeric RETRY_DELAY. The e2e pipeline overwrites run_e2e_tests.sh with main's copy even when it checks out an arbitrary SG_COMMIT, so the helper has to come from main too or every CBS-backed run against an older commit dies on a missing file. curl drops the exec bit, hence the chmod. Warm the root module cache in run_e2e_tests.sh as well: start_local.py builds Sync Gateway out of REPO_DIR, which a cold worker would otherwise download unretried. It goes after the private module rewrite so go-fleecedelta still resolves. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
torcolvin
reviewed
Sep 14, 2026
| # go mod download would try to fetch the private EE module, which public runners can't reach | ||
| - name: Download Go modules | ||
| shell: bash | ||
| run: .ci/retry.sh go list -deps -test -tags cb_sg_devmode ./... tool > /dev/null |
Collaborator
There was a problem hiding this comment.
Suggested change
| run: .ci/retry.sh go list -deps -test -tags cb_sg_devmode ./... tool > /dev/null | |
| run: .ci/retry.sh go list -deps -test -tags cb_sg_devmode,ruleguard ./... tool > /dev/null |
Otherwise ruleguard gets skipped
# Conflicts: # integration-test/e2e/Jenkinsfile
ruleguard/ only builds under the ruleguard tag, so the dependency warm-up skipped it and golangci-lint had to fetch go-ruleguard/dsl mid-lint, outside the retry wrapper. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
torcolvin
approved these changes
Sep 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CBG-5862
Add
.ci/retry.shand give every CI job an explicit, retried download step before it builds or tests.go-fleecedeltais a direct requirement but private, andgo mod downloadignores build tags, so it fails on runners without the EE credentials.gotestsumandaddlicensego mod download, which covers CE, EE and tool modules at once.golang/go#51323
Integration Tests