Conversation
a147d4b to
35a0832
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The published credential proxy lacks access control, and the integration fixture does not detect failed startup sequencing.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Balanced
Findings: 1
New issues introduced by this change (2)
| Severity | Finding |
|---|---|
internal/infra/proxy.go — Avoid exposing the credential-injecting proxy without authentication View comment |
|
testdata/scripts/proxy.txt — Make a failed readiness connection fail the fixture View comment |
What changed in this PR
Adds HTTP-level proxy readiness checks before starting dependent containers.
Changes:
- Publishes a loopback readiness port and polls it via Go HTTP.
- Preserves primary errors during proxy cleanup.
- Adds unit and Docker-backed readiness coverage.
| File | Description |
|---|---|
internal/infra/proxy.go |
Implements proxy readiness probing. |
internal/infra/run.go |
Waits before starting dependent containers. |
internal/infra/updater.go |
Extracts reusable polling and port checks. |
internal/infra/proxy_test.go |
Tests HTTP-level readiness. |
testdata/scripts/proxy.txt |
Adds delayed-proxy integration coverage. |
go.mod |
Promotes Docker connections to a direct dependency. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
35a0832 to
08a8d7c
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
The readiness probe breaks custom proxy images that do not provide the previously undeclared nc dependency.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Review tier: Balanced
Findings: 1
New issues introduced by this change (1)
| Severity | Finding |
|---|---|
internal/infra/updater.go — Preserve compatibility with custom proxy images View comment |
Issues resolved since last review (2)
| Severity | Finding |
|---|---|
testdata/scripts/proxy.txt — Make a failed readiness connection fail the fixture View resolved comment |
|
internal/infra/proxy.go — Avoid exposing the credential-injecting proxy without authentication View resolved comment |
08a8d7c to
86907ee
Compare
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Internal timeout classification and shell-path compatibility can produce incorrect failures.
Get a fresh assessment by requesting another Copilot review.
Review tier: Balanced
Findings: 2
New issues introduced by this change (2)
| Severity | Finding |
|---|---|
internal/infra/proxy.go — Do not expose the private readiness deadline as the update timeout View comment |
|
internal/infra/updater.go — Use the same shell contract as proxy startup View comment |
Issues resolved since last review (1)
| Severity | Finding |
|---|---|
internal/infra/updater.go — Preserve compatibility with custom proxy images View resolved comment |
Inspect the proxy container socket tables with shell built-ins before creating dependent containers. Avoid publishing the credential-injecting proxy or requiring additional image executables, preserve parent timeout and cleanup errors, support shells resolved through PATH, and add Docker-backed sequencing coverage. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
86907ee to
9ef7997
Compare



Why
The proxy can perform synchronous NuGet service-index discovery before it binds port 1080. A running proxy container therefore does not guarantee that the proxy is ready, and the collector or updater can start too early.
The CLI can run on Windows, macOS, or Linux, and custom proxy images should not need to add a readiness-specific executable or place their shell at
/bin/sh.What changed
/proc/net/tcpand/proc/net/tcp6inside the Linux proxy container through Docker's exec API before creating the collector or updater.shbuilt-ins, resolvingshthrough the image'sPATHjust as proxy startup does.nc,grep, or another additional executable in custom proxy images.ncand no/bin/sh, proving updater startup waits for a delayed listener and failed updater connectivity aborts the fixture.This provides the same startup sequencing guarantee as github/dependabot-action#1757 while remaining independent of the CLI host operating system and additional custom-image tooling.
Testing
go test ./internal/...go testafter excludingcmd/dependabot-count=20TestDependabot/proxywith a custom proxy image that has neitherncnor/bin/shA full local
go test ./...is blocked by the script-test harness exposing onlyPATH: Docker falls back to its legacy builder and rejects existingCOPY --chmodinstructions across unrelated fixtures. The targeted Docker test passed using a local legacy-builder-compatible form of the fixture, with no such compatibility change retained in this branch.