Own canonical offline private Go module build tooling
Authored-By: Codex (GPT-6) <noreply@openai.com>
This commit is contained in:
@@ -9,6 +9,40 @@ PR build that pulls a private base image still needs a registry token limited to
|
||||
the `read:package` capability; public-base builds need no token. The action logs
|
||||
in as `ci-bot`, so the token must be issued to that account.
|
||||
|
||||
## Private Go module builds
|
||||
|
||||
`tools/private-modules/` owns the stdlib-only offline generator and verifier for
|
||||
native Go file-proxy bundles. Consumers export exact committed source bytes so
|
||||
their first check needs no Git, network, module dependency, or credential.
|
||||
Changes belong here; consumers must not edit their generated copies.
|
||||
|
||||
From this checkout, export a reviewed full commit ID into a service checkout:
|
||||
|
||||
```sh
|
||||
python3 tools/export-private-modules.py /path/to/service --revision FULL_COMMIT_ID
|
||||
python3 tools/export-private-modules.py /path/to/service --revision FULL_COMMIT_ID --check
|
||||
```
|
||||
|
||||
The export includes source revision/path/digest metadata and a SHA256 lock.
|
||||
Service Make and Docker builds run `sha256sum -c tools/private-modules.sha256`
|
||||
before `GO111MODULE=off GOTOOLCHAIN=local GOFLAGS= go run tools/private-modules.go`.
|
||||
Reviewers can reproduce `--check` from that pinned source commit. The local hash
|
||||
check detects accidental drift; Git review establishes the trusted source pin.
|
||||
|
||||
Populate selected private versions through the configured authenticated Go
|
||||
client once, then run the generated command with `-write` to copy unchanged
|
||||
`.info`, `.mod`, and `.zip` cache artifacts into `third_party/go-proxy`. The
|
||||
generator itself enforces offline resolution and a local toolchain. It preserves
|
||||
the complete original archives, including any licenses and notices. Normal Go
|
||||
downloads still validate their content against the consumer's `go.sum`.
|
||||
|
||||
Consumer resolution uses `GONOPROXY=none`, `GONOSUMDB=code.fritzlab.net`,
|
||||
`GOFLAGS=-mod=readonly`, `GOTOOLCHAIN=local`, and
|
||||
`GOPROXY=file:///absolute/service/third_party/go-proxy,https://proxy.golang.org`.
|
||||
Run the checker before and after downloads; its exact go.mod/go.sum fingerprint
|
||||
rejects stale dependency closures. Public modules stay on the public proxy.
|
||||
Registry publication remains a separate authenticated operation.
|
||||
|
||||
## Usage
|
||||
|
||||
```yaml
|
||||
|
||||
Reference in New Issue
Block a user