You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: enforce the DGXC Go proxy in the verification workflow
Flips the main-only verification workflow from `routed` to `enforced`:
GOPROXY carries no `,direct` fallback, so a module Artifactory does not
serve is a hard failure rather than a silent fetch from the public
internet. No build, release, or PR is affected — the workflow verifies a
property and ships nothing.
`routed` falls through on 404/410, so a module Artifactory did not carry
resolved publicly and the check still went green. We knew nothing was
rejected; we did not know everything came from Artifactory. Removing the
fallback makes the workflow its own coverage measurement, because with no
fallback and a cold cache there is nowhere else a module can come from.
That only holds if the job actually fetches, which the first six attempts
did not establish. Five ways it could report success without measuring
anything were found in review and closed:
- A restored 608 MB setup-go cache satisfied `go mod download` with zero
fetches. Fixed with cache: false plus an explicit cold-cache assertion.
- The `,direct` check was narrower than the property: an
`<artifactory>,<other-proxy>` value still falls through on 404. Now
requires an exact match on the full expected URL, repo key included,
which also closes the -cdn variants that can hand off to another origin.
- `go mod download -x` logs the URL Go requested and follows redirects
inside http.Client.Do, so a 3xx to another host was invisible to the
counters. Added a curl canary measuring the final destination.
- That canary then had the same defect one layer down: without a status
check, a 401 or 404 reports zero redirects from the Artifactory host.
Now requires HTTP 200 first.
- `read < <(curl ...)` returns read's status and discards curl's, so a
body truncated after a 200 header still passed. Now uses command
substitution with an explicit status capture.
Declined a network-layer outbound-host allowlist: disproportionate for a
workflow that ships nothing, and the canary covers the realistic slice.
Verified on a cold cache with a single-entry GOPROXY: 224 module zips
served 200 by Artifactory — matching the 224 modules in
vendor/modules.txt — across requests that reached no other host, with the
regenerated vendor/ byte-identical to what is committed.
The file header records that this workflow is temporary and names the
three things that migrate when #2374 deletes it: mode: enforced,
id-token: write plus the teardown, and the GOPROXY assertion. Everything
else exists only because this job builds nothing; a real build fails on
its own when the proxy cannot serve it.
Closes#2375
Signed-off-by: Mark Chmarny <mark@chmarny.com>
0 commit comments