deploy: add an in-cluster NuGet caching proxy for runner builds #571
Labels
No labels
burndown-2026-06
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#571
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Context
eco-app required image builds have reproduced the known flaky public NuGet egress failure from eco-app#69. Forgejo Actions run 105 reached the mod packaging stage, then
dotnet restoretimed out fetchinghttps://api.nuget.org/v3/index.jsonwith NU1301. The restore consumed about 10 minutes before failing.The previous application-side retry mitigation was deliberately retired because it turned deterministic outages into 20 to 40 minute sinks. eco-app#110 moved the mod checks out of required CI, and eco-app#111 retained shared NuGet caching or proxying as the unresolved prerequisite for a trustworthy required path. The new container-native mod packaging work makes that prerequisite concrete.
Related evidence:
Required outcome
Deploy a stable internal NuGet v3 caching proxy or mirror that the Forgejo Docker and Docker-build runner lanes can reach from job containers and DinD builds. The proxy should cache upstream nuget.org packages and remove direct public-feed availability from the critical restore path after the cache is warm.
Follow the existing runner deployment precedent. Keep endpoint and cluster deployment knowledge in infrastructure. eco-app can add the smallest consumer-side
NuGet.Configchange once the stable logical feed endpoint exists.Acceptance
build-image, then all four independent mod publish jobs run.Closing as a duplicate of #563. The previously recorded Telegram curl-container test establishes the shared runner-network context: ordinary Kubernetes pods can reach the destination, while the Forgejo DinD path is destination-sensitive, with IPv6 unavailable and forced IPv4 stalling after TLS ClientHello. The new NuGet timeout is a second affected destination.
The canonical fix should diagnose and repair or proxy the general DinD egress path in #563. A dedicated NuGet cache can be reconsidered later for build performance, but it is not the first root-cause fix.