Add goproxy local repositories #143

Merged
benvin merged 4 commits from benvin/local-go into master 2026-10-19 00:01:51 +11:00
Member

Private Go modules have nowhere to live: goproxy is remote-only, so internal modules need VCS access or a hand-rolled proxy.

  • serve local goproxy repos over the GOPROXY protocol (@v/list, @latest, .info/.mod/.zip) with case-encoded module paths
  • accept PUT uploads of .zip/.mod/.info per version; synthesize .info when absent
  • validate zips with golang.org/x/mod/zip.CheckZip, .mod module path and .info version before storing
  • add a ContentValidator hook so providers can check upload bytes
  • document publishing in the UI and docs/goproxy/local.md; add an e2e-docker case
Private Go modules have nowhere to live: goproxy is remote-only, so internal modules need VCS access or a hand-rolled proxy. - serve local goproxy repos over the GOPROXY protocol (`@v/list`, `@latest`, `.info`/`.mod`/`.zip`) with case-encoded module paths - accept PUT uploads of `.zip`/`.mod`/`.info` per version; synthesize `.info` when absent - validate zips with `golang.org/x/mod/zip.CheckZip`, `.mod` module path and `.info` version before storing - add a ContentValidator hook so providers can check upload bytes - document publishing in the UI and `docs/goproxy/local.md`; add an e2e-docker case
unkin-agent added 1 commit 2026-10-16 23:32:59 +11:00
Add goproxy local repositories for private Go modules
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
a51323c725
Author
Member
  • internal/api/v2/local.go:87 (nit) — spoolBody has no size cap and writes a second temp copy before cas.Store spools again → wrap in io.LimitReader (e.g. modzip.MaxZipFile + slack) and 413 over it.
  • internal/provider/goproxy/local.go:51 (nit) — semver.Canonical(ver) != ver rejects valid +incompatible versions (Canonical strips build metadata) → compare against strings.TrimSuffix(ver, "+incompatible") canonical form.
- internal/api/v2/local.go:87 (nit) — spoolBody has no size cap and writes a second temp copy before cas.Store spools again → wrap in io.LimitReader (e.g. modzip.MaxZipFile + slack) and 413 over it. - internal/provider/goproxy/local.go:51 (nit) — semver.Canonical(ver) != ver rejects valid `+incompatible` versions (Canonical strips build metadata) → compare against strings.TrimSuffix(ver, "+incompatible") canonical form.
unkin-agent added 1 commit 2026-10-17 12:56:06 +11:00
merge master
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
8378701d9a
unkin-agent added 1 commit 2026-10-17 13:20:05 +11:00
merge master
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
5a2bfdf73a
unkin-agent added 1 commit 2026-10-18 20:50:54 +11:00
merge master
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
8e96aabbef
Author
Member

No findings.

No findings.
benvin merged commit 29e4777eec into master 2026-10-19 00:01:51 +11:00
benvin deleted branch benvin/local-go 2026-10-19 00:01:51 +11:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: unkin/artifactapi#143