Add goproxy local repositories #143

Open
unkin-agent wants to merge 3 commits from benvin/local-go into master
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 README; 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 README; 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
All checks were successful
ci/woodpecker/pr/pre-commit Pipeline was successful
Required
Details
ci/woodpecker/pr/test Pipeline was successful
Required
Details
ci/woodpecker/pr/build Pipeline was successful
Required
Details
This pull request has changes conflicting with the target branch.
  • README.md
  • internal/provider/provider.go
  • ui/src/components/UsageInstructions.tsx
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin benvin/local-go:benvin/local-go
git checkout benvin/local-go
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