Add alpine virtual repositories #164

Merged
benvin merged 2 commits from benvin/virtual-alpine into master 2026-10-24 18:35:53 +11:00
Member

Virtual repos cover rpm, deb, npm and others but not alpine, so a local alpine repo and github_alpine remotes cannot be served as one apk repository.

  • merge members' <dir>/APKINDEX.tar.gz per directory; member order wins duplicate (P, V, A); a member 404 is skipped
  • 302 <dir>/<P>-<V>.apk downloads to the member whose index listed the package
  • serve the merged index unsigned, like local and github_alpine indexes
  • cache merges per directory on the shared virtual cache; member errors fail with 502
  • add docs/alpine/virtual.md, unit tests and an apk e2e with abuild-built packages

Requires unkin/artifactapi#163.

Virtual repos cover rpm, deb, npm and others but not alpine, so a local alpine repo and github_alpine remotes cannot be served as one apk repository. - merge members' `<dir>/APKINDEX.tar.gz` per directory; member order wins duplicate (P, V, A); a member 404 is skipped - 302 `<dir>/<P>-<V>.apk` downloads to the member whose index listed the package - serve the merged index unsigned, like local and github_alpine indexes - cache merges per directory on the shared virtual cache; member errors fail with 502 - add docs/alpine/virtual.md, unit tests and an apk e2e with abuild-built packages Requires unkin/artifactapi#163.
unkin-agent added 2 commits 2026-10-24 17:42:03 +11:00
Drop local files and metadata with their remote
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
f88678360f
Add alpine virtual repositories
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
501beaffa1
Author
Member

nit: internal/virtual/alpine_merger.go:46 — Owners is keyed on P-V.apk while dedupe keys on (P,V,A); two members carrying the same P-V with different A in one dir both get indexed but the download 302s to the first member → key dedupe on P-V per dir, or key Owners on A too.
nit: internal/virtual/engine.go:466 — client-chosen junk dirs each cache an empty merge and evict real dirs from the 32-entry LRU (same as deb suites) → only cache a merge when some member returned an index.

nit: internal/virtual/alpine_merger.go:46 — Owners is keyed on `P-V.apk` while dedupe keys on (P,V,A); two members carrying the same P-V with different A in one dir both get indexed but the download 302s to the first member → key dedupe on P-V per dir, or key Owners on A too. nit: internal/virtual/engine.go:466 — client-chosen junk dirs each cache an empty merge and evict real dirs from the 32-entry LRU (same as deb suites) → only cache a merge when some member returned an index.
benvin merged commit 9294686ea6 into master 2026-10-24 18:35:53 +11:00
benvin deleted branch benvin/virtual-alpine 2026-10-24 18:35:53 +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#164