11 Commits

Author SHA1 Message Date
benvin 36e23e9a2b Proxy iplocate IP databases via the existing github remote
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
Add patterns to the github.com generic remote for the iplocate ip-to-asn /
ip-to-country databases rather than standing up a new remote. The files are
Git-LFS, so the /raw/ path redirects to media.githubusercontent.com; the github
remote already follows github's cross-host redirects (as it does for release
assets), and the raw path returns the real bytes (verified: 12MB zip / 78MB mmdb).
Marked mutable (branch content).
2026-07-21 22:33:01 +10:00
benvin 8735cc7e74 Merge pull request 'rpm: proxy RPM Fusion free/nonfree remotes' (#7) from benvin/rpmfusion-remotes into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #7
2026-07-18 14:29:45 +10:00
unkinben e71eb90101 rpm: drop repodata from rpmfusion immutable_patterns
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
repodata is regenerated upstream, so it must stay mutable (mutable_ttl)
rather than being cached as immutable.

Claude-Session: https://claude.ai/code/session_01VZ81u2JtjvaPq8Z3EDTSMb
2026-07-18 14:18:35 +10:00
unkinben 79f4d244e8 Merge pull request 'remote_rpm: stop caching repodata as immutable' (#8) from benvin/rpm-repodata-mutable into main
ci/woodpecker/push/apply Pipeline was successful
2026-07-18 14:15:52 +10:00
unkinben d168962f82 remote_rpm: stop caching repodata as immutable
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
repodata (repomd.xml and its referenced index files) is a mutable index that
upstream RPM repos rotate frequently. Marking it immutable (immutable_ttl: 0)
makes artifactapi cache repomd.xml forever: classifier.go checks
immutable_patterns before the RPM provider's own rule (which already classifies
repodata/ as mutable), and SetTTL with ttl=0 writes a Redis key with no expiry.
The result is a stale repomd.xml that keeps pointing at checksum-named metadata
files upstream has already deleted -> 404 on dnf metadata refresh. This broke
rpmbuilder's almalinux8 builds via the epel remote and would eventually hit any
rolling RPM remote.

Remove the repodata immutable patterns from every remote_rpm config so repodata
falls through to the provider's Mutable classification and is re-fetched every
mutable_ttl. RPMs, noarch, GPG keys and .img files stay immutable.

- Drop ".*/repodata/.*\.{xml,sqlite,yaml}.*$" from all config/remote_rpm/*.yaml
  (14 files, 20 lines).

After apply, the already-cached stale repodata entries must be evicted (they
have no expiry); that is done per-remote as a follow-up.
2026-07-18 14:12:02 +10:00
unkinben 04617699aa rpm: proxy RPM Fusion free/nonfree remotes
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
The rpmfusion-free / rpmfusion-nonfree repos have no artifactapi remote,
so nodes still point at the retired packagerepo.service.consul mirror and
dnf fails to fetch repomd.xml.

Add caching remote proxies for both trees, pointed at the upstream
download1.rpmfusion.org origin, so el nodes can install RPM Fusion
packages (ffmpeg, etc.) through artifactapi.

Claude-Session: https://claude.ai/code/session_01VZ81u2JtjvaPq8Z3EDTSMb
2026-07-18 14:03:41 +10:00
benvin 53c26160f1 Merge pull request 'Add per-distro rpm-vendor local RPM repos' (#6) from benvin/rpm-vendor into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #6
2026-07-18 11:19:38 +10:00
unkinben 7bdb30d8d4 Add per-distro rpm-vendor local RPM repos
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/plan Pipeline was successful
rpmbuilder publishes vendored third-party RPMs (vault, consul, helm, ...)
which currently go to Gitea's RPM registry. Move them onto artifactapi so
they live in real yum repos alongside rpm-internal, and keep vendored
packages separate from in-house software. rpmbuilder targets EL8, EL9 and
Fedora 42/43/44, so each distro gets its own repo to avoid EL/Fedora RPMs
colliding in a single repodata set.

- Add config/local_rpm/rpm-vendor-el8.yaml
- Add config/local_rpm/rpm-vendor-el9.yaml
- Add config/local_rpm/rpm-vendor-f42.yaml
- Add config/local_rpm/rpm-vendor-f43.yaml
- Add config/local_rpm/rpm-vendor-f44.yaml

config.hcl already globs local_rpm/*.yaml, so no wiring change is needed.
2026-07-18 00:08:58 +10:00
benvin 834a04a034 Merge pull request 'dockerhub: proxy grafana/ images' (#5) from benvin/grafana-images into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #5
2026-07-06 23:52:55 +10:00
unkinben 7ce31f864c dockerhub: proxy grafana/ images
ci/woodpecker/pr/plan Pipeline was successful
ci/woodpecker/pr/pre-commit Pipeline was successful
The grafana-operator creates Grafana pods from docker.io/grafana/grafana,
which the dockerhub remote did not allow, so the pods would ImagePullBackOff.
Add the ^grafana/ pattern so the grafana image (and image-renderer) proxy
through artifactapi.
2026-07-06 22:11:47 +10:00
benvin 78caca1d69 Merge pull request 'feat: manage local docker registries' (#4) from benvin/local-docker into main
ci/woodpecker/push/apply Pipeline was successful
Reviewed-on: #4
2026-07-05 22:43:12 +10:00
23 changed files with 23 additions and 20 deletions
+1
View File
@@ -0,0 +1 @@
description: "Vendored third-party RPM packages for Enterprise Linux 8 (RHEL/AlmaLinux/Rocky 8), built by rpmbuilder"
+1
View File
@@ -0,0 +1 @@
description: "Vendored third-party RPM packages for Enterprise Linux 9 (RHEL/AlmaLinux/Rocky 9), built by rpmbuilder"
+1
View File
@@ -0,0 +1 @@
description: "Vendored third-party RPM packages for Fedora 42, built by rpmbuilder"
+1
View File
@@ -0,0 +1 @@
description: "Vendored third-party RPM packages for Fedora 43, built by rpmbuilder"
+1
View File
@@ -0,0 +1 @@
description: "Vendored third-party RPM packages for Fedora 44, built by rpmbuilder"
+1
View File
@@ -16,6 +16,7 @@ patterns:
- "^bitnami/"
- "^curlimages/curl"
- "^emberstack/kubernetes-reflector"
- "^grafana/"
- "^hashicorp/consul"
- "^hashicorp/vault"
- "^intel/"
+3
View File
@@ -5,6 +5,9 @@ mutable_ttl: 7200
mutable_patterns:
- ".*/archive/refs/heads/.*.tar.gz$"
- "stalwartlabs/webadmin/releases/latest/download/webadmin.zip$"
# iplocate IP databases (Git-LFS; the /raw/ path redirects to the LFS media host).
- "iplocate/ip-address-databases/raw/.*/ip-to-asn/.*"
- "iplocate/ip-address-databases/raw/.*/ip-to-country/.*"
patterns:
- ".*/archive/refs/tags/.*.tar.gz$"
- "ahmetb/kubectx/.*/kubectx_.*_linux_x86_64.tar.gz$"
-3
View File
@@ -5,9 +5,6 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.sqlite.*$"
- ".*/repodata/.*\\.xml.*$"
- ".*/repodata/.*\\.yaml.*$"
- ".*/install.img"
- ".*/squashfs.img"
- ".*/updates.img"
-3
View File
@@ -5,9 +5,6 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.sqlite.*$"
- ".*/repodata/.*\\.xml.*$"
- ".*/repodata/.*\\.yaml.*$"
- ".*/install.img"
- ".*/squashfs.img"
- ".*/updates.img"
-1
View File
@@ -5,4 +5,3 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-1
View File
@@ -5,4 +5,3 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-1
View File
@@ -5,4 +5,3 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-1
View File
@@ -3,4 +3,3 @@ description: "Claude Code RPM repository"
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-3
View File
@@ -5,7 +5,4 @@ mutable_ttl: 7200
immutable_patterns:
- ".*/Everything/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.sqlite.*$"
- ".*/repodata/.*\\.xml.*$"
- ".*/repodata/.*\\.yaml.*$"
- "RPM-GPG-KEY-.*$"
-1
View File
@@ -7,4 +7,3 @@ immutable_patterns:
- "updates/.*/Everything/x86_64/.*\\.rpm$"
- "development/.*/Everything/x86_64/.*\\.rpm$"
- ".*/noarch/.*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-1
View File
@@ -4,4 +4,3 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
-1
View File
@@ -4,5 +4,4 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
- ".*/RPM-GPG-KEY-.*$"
-1
View File
@@ -4,5 +4,4 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
- "GPG-KEY-.*$"
-1
View File
@@ -4,6 +4,5 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
- ".*/RPM-GPG-KEY-.*$"
- ".*/PGDG-RPM-GPG-KEY-.*$"
-1
View File
@@ -4,5 +4,4 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"
- "public.key$"
+7
View File
@@ -0,0 +1,7 @@
base_url: https://download1.rpmfusion.org/free
description: RPM Fusion free RPM package repository
immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- "RPM-GPG-KEY-.*$"
+7
View File
@@ -0,0 +1,7 @@
base_url: https://download1.rpmfusion.org/nonfree
description: RPM Fusion nonfree RPM package repository
immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- "RPM-GPG-KEY-.*$"
-1
View File
@@ -4,4 +4,3 @@ immutable_ttl: 0
mutable_ttl: 7200
immutable_patterns:
- ".*\\.rpm$"
- ".*/repodata/.*\\.xml.*$"