9294686ea6
ci/woodpecker/tag/docker Pipeline was successful
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. Reviewed-on: #164 Co-authored-by: unkin-agent <unkin-agent@unkin.net> Co-committed-by: unkin-agent <unkin-agent@unkin.net>
1.1 KiB
1.1 KiB
alpine virtual
An alpine virtual serves one apk repository over local and remote alpine
members at /api/v1/virtual/<name>/.
<dir>/APKINDEX.tar.gzmerges each member's index for the same<dir>(e.g.x86_64/); on a duplicate (P, V, A) the earlier member wins. A member that 404s for that directory is skipped.- apk builds download paths itself (
<dir>/<P>-<V>.apk), so the virtual 302s each download to the member whose index listed it. - The merged index is unsigned, like local and
github_alpineindexes: clients need--allow-untrusted(packages keep their own signatures). - Any other member error fails the request with 502. Merges are cached for 60s per directory, up to 32 directories per virtual.
resource "artifactapi_virtual" "alpine" {
name = "alpine"
package_type = "alpine"
members = [artifactapi_local_alpine.internal.name, artifactapi_remote_github_alpine.tool.name]
}
echo https://artifactapi.example.com/api/v1/virtual/alpine >> /etc/apk/repositories
apk update --allow-untrusted
apk add --allow-untrusted mytool
Upload to the local member directly; the virtual is read-only.