refactor: split config into remotes/virtuals/locals sections
ci/woodpecker/pr/pre-commit Pipeline was successful
ci/woodpecker/pr/test Pipeline was successful
ci/woodpecker/pr/build Pipeline was successful

Repository types now live under dedicated top-level keys instead of a
shared remotes: block distinguished by a type field:

  remotes:   caching proxy remotes (no type field needed)
  virtuals:  virtual merged-index repositories
  locals:    local upload repositories

Routes for local repos move from /api/v1/remote/ to /api/v1/local/.
config.py gains get_virtual_config() and get_local_config() lookups.
Root endpoint now reports all three sections. Drop root conf.d/ (was
an exact duplicate of examples/conf.d-method/).
This commit is contained in:
2026-04-30 23:48:26 +10:00
parent c7baae8d0d
commit a74e3c49eb
18 changed files with 170 additions and 286 deletions
+35 -98
View File
@@ -34,9 +34,7 @@
#
remotes:
github:
base_url: "https://github.com"
type: "remote"
package: "generic"
base_url: "https://github.com" package: "generic"
description: "GitHub releases and files"
immutable_patterns:
- "gruntwork-io/terragrunt/.*terragrunt_linux_amd64.*"
@@ -66,9 +64,7 @@ remotes:
mutable_ttl: 0
github-archive:
base_url: "https://github.com"
type: "remote"
package: "generic"
base_url: "https://github.com" package: "generic"
description: "GitHub repository archive tarballs"
immutable_patterns:
# Tag archives are immutable — a tag never changes
@@ -86,9 +82,7 @@ remotes:
mutable_ttl: 86400 # Branch archives refreshed after 1 day
gitea-dl:
base_url: "https://dl.gitea.com"
type: "remote"
package: "generic"
base_url: "https://dl.gitea.com" package: "generic"
description: "Gitea download site"
immutable_patterns:
- "act_runner/.*/act_runner-.*-linux-amd64$"
@@ -97,9 +91,7 @@ remotes:
mutable_ttl: 0
hashicorp-releases:
base_url: "https://releases.hashicorp.com"
type: "remote"
package: "generic"
base_url: "https://releases.hashicorp.com" package: "generic"
description: "HashiCorp product releases"
immutable_patterns:
- "terraform/.*terraform_.*_linux_amd64\\.zip$"
@@ -118,9 +110,7 @@ remotes:
mutable_ttl: 0
alpine:
base_url: "https://dl-cdn.alpinelinux.org"
type: "remote"
package: "alpine"
base_url: "https://dl-cdn.alpinelinux.org" package: "alpine"
description: "Alpine Linux APK package repository"
immutable_patterns:
- ".*/x86_64/.*\\.apk$"
@@ -132,9 +122,7 @@ remotes:
mutable_ttl: 7200 # Index files (APKINDEX.tar.gz) cached for 2 hours
almalinux:
base_url: "https://gsl-syd.mm.fcix.net/almalinux"
type: "remote"
package: "rpm"
base_url: "https://gsl-syd.mm.fcix.net/almalinux" package: "rpm"
description: "AlmaLinux RPM package repository"
immutable_patterns:
- ".*/x86_64/.*\\.rpm$"
@@ -149,9 +137,7 @@ remotes:
mutable_ttl: 7200 # Metadata files cached for 2 hours
epel:
base_url: "http://mirror.aarnet.edu.au/pub/epel"
type: "remote"
package: "rpm"
base_url: "http://mirror.aarnet.edu.au/pub/epel" package: "rpm"
description: "EPEL (Extra Packages for Enterprise Linux)"
immutable_patterns:
- "8/Everything/x86_64/.*\\.rpm$"
@@ -164,9 +150,7 @@ remotes:
mutable_ttl: 7200 # Metadata files cached for 2 hours
fedora:
base_url: "https://gsl-syd.mm.fcix.net/fedora/linux"
type: "remote"
package: "rpm"
base_url: "https://gsl-syd.mm.fcix.net/fedora/linux" package: "rpm"
description: "Fedora Linux RPM package repository"
immutable_patterns:
- "releases/.*/Everything/x86_64/.*\\.rpm$"
@@ -179,9 +163,7 @@ remotes:
mutable_ttl: 300 # Metadata files cached for 5 minutes
ghcr:
base_url: "https://ghcr.io"
type: "remote"
package: "docker"
base_url: "https://ghcr.io" package: "docker"
description: "GitHub Container Registry"
# username: "your-github-username"
# password: "your-github-pat" # needs read:packages scope
@@ -193,18 +175,14 @@ remotes:
mutable_ttl: 300
dockerhub:
base_url: "https://registry-1.docker.io"
type: "remote"
package: "docker"
base_url: "https://registry-1.docker.io" package: "docker"
description: "Docker Hub registry"
cache:
immutable_ttl: 0
mutable_ttl: 300
pypi:
base_url: "https://files.pythonhosted.org"
type: "remote"
package: "pypi"
base_url: "https://files.pythonhosted.org" package: "pypi"
description: "Python Package Index — simple index and package files via a single remote"
# simple/ requests are transparently fetched from pypi.org; package files come from
# files.pythonhosted.org (base_url). URLs in the simple index are rewritten to this remote.
@@ -225,9 +203,7 @@ remotes:
mutable_ttl: 600 # Simple index pages refreshed after 10 minutes
pypi-gitea:
base_url: "https://gitea.example.com/api/packages/myorg/pypi"
type: "remote"
package: "pypi"
base_url: "https://gitea.example.com/api/packages/myorg/pypi" package: "pypi"
description: "Private Gitea PyPI registry — simple index and files at the same host"
# username: "your-gitea-username"
# password: "your-personal-access-token" # needs package:read scope
@@ -243,9 +219,7 @@ remotes:
mutable_ttl: 600
npm:
base_url: "https://registry.npmjs.org"
type: "remote"
package: "npm"
base_url: "https://registry.npmjs.org" package: "npm"
description: "npm registry — package metadata with tarball URL rewriting"
check_mutable_updates: true
immutable_patterns:
@@ -257,9 +231,7 @@ remotes:
mutable_ttl: 600 # Package metadata refreshed after 10 minutes
hashicorp-helm:
base_url: "https://helm.releases.hashicorp.com"
type: "remote"
package: "helm"
base_url: "https://helm.releases.hashicorp.com" package: "helm"
description: "HashiCorp Helm chart repository (Vault, Consul, Nomad, etc.)"
check_mutable_updates: true
immutable_patterns:
@@ -269,9 +241,7 @@ remotes:
mutable_ttl: 3600 # index.yaml refreshed after 1 hour
metallb:
base_url: "https://metallb.github.io/metallb"
type: "remote"
package: "helm"
base_url: "https://metallb.github.io/metallb" package: "helm"
description: "MetalLB load balancer Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -281,9 +251,7 @@ remotes:
mutable_ttl: 3600
jetstack:
base_url: "https://charts.jetstack.io"
type: "remote"
package: "helm"
base_url: "https://charts.jetstack.io" package: "helm"
description: "Jetstack Helm charts (cert-manager)"
check_mutable_updates: true
immutable_patterns:
@@ -293,9 +261,7 @@ remotes:
mutable_ttl: 3600
rancher-stable:
base_url: "https://releases.rancher.com/server-charts/stable"
type: "remote"
package: "helm"
base_url: "https://releases.rancher.com/server-charts/stable" package: "helm"
description: "Rancher stable Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -305,9 +271,7 @@ remotes:
mutable_ttl: 3600
purelb:
base_url: "https://gitlab.com/api/v4/projects/20400619/packages/helm/stable"
type: "remote"
package: "helm"
base_url: "https://gitlab.com/api/v4/projects/20400619/packages/helm/stable" package: "helm"
description: "PureLB load balancer Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -317,9 +281,7 @@ remotes:
mutable_ttl: 3600
istio:
base_url: "https://istio-release.storage.googleapis.com/charts"
type: "remote"
package: "helm"
base_url: "https://istio-release.storage.googleapis.com/charts" package: "helm"
description: "Istio service mesh Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -329,9 +291,7 @@ remotes:
mutable_ttl: 3600
cnpg:
base_url: "https://cloudnative-pg.github.io/charts"
type: "remote"
package: "helm"
base_url: "https://cloudnative-pg.github.io/charts" package: "helm"
description: "CloudNativePG operator Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -341,9 +301,7 @@ remotes:
mutable_ttl: 3600
ceph-csi:
base_url: "https://ceph.github.io/csi-charts"
type: "remote"
package: "helm"
base_url: "https://ceph.github.io/csi-charts" package: "helm"
description: "Ceph CSI driver Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -353,9 +311,7 @@ remotes:
mutable_ttl: 3600
external-dns:
base_url: "https://kubernetes-sigs.github.io/external-dns/"
type: "remote"
package: "helm"
base_url: "https://kubernetes-sigs.github.io/external-dns/" package: "helm"
description: "ExternalDNS Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -365,9 +321,7 @@ remotes:
mutable_ttl: 3600
intel-helm:
base_url: "https://intel.github.io/helm-charts/"
type: "remote"
package: "helm"
base_url: "https://intel.github.io/helm-charts/" package: "helm"
description: "Intel Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -377,9 +331,7 @@ remotes:
mutable_ttl: 3600
elastic:
base_url: "https://helm.elastic.co"
type: "remote"
package: "helm"
base_url: "https://helm.elastic.co" package: "helm"
description: "Elastic stack Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -389,9 +341,7 @@ remotes:
mutable_ttl: 3600
k8up-io:
base_url: "https://k8up-io.github.io/k8up"
type: "remote"
package: "helm"
base_url: "https://k8up-io.github.io/k8up" package: "helm"
description: "K8up backup operator Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -401,9 +351,7 @@ remotes:
mutable_ttl: 3600
victoriametrics:
base_url: "https://victoriametrics.github.io/helm-charts/"
type: "remote"
package: "helm"
base_url: "https://victoriametrics.github.io/helm-charts/" package: "helm"
description: "VictoriaMetrics observability Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -413,9 +361,7 @@ remotes:
mutable_ttl: 3600
grafana:
base_url: "https://grafana.github.io/helm-charts"
type: "remote"
package: "helm"
base_url: "https://grafana.github.io/helm-charts" package: "helm"
description: "Grafana observability Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -425,9 +371,7 @@ remotes:
mutable_ttl: 3600
helm-openldap:
base_url: "https://jp-gouin.github.io/helm-openldap/"
type: "remote"
package: "helm"
base_url: "https://jp-gouin.github.io/helm-openldap/" package: "helm"
description: "OpenLDAP Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -437,9 +381,7 @@ remotes:
mutable_ttl: 3600
woodpecker:
base_url: "https://woodpecker-ci.org/"
type: "remote"
package: "helm"
base_url: "https://woodpecker-ci.org/" package: "helm"
description: "Woodpecker CI Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -449,9 +391,7 @@ remotes:
mutable_ttl: 3600
stakater:
base_url: "https://stakater.github.io/stakater-charts"
type: "remote"
package: "helm"
base_url: "https://stakater.github.io/stakater-charts" package: "helm"
description: "Stakater Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -461,9 +401,7 @@ remotes:
mutable_ttl: 3600
jfrog:
base_url: "https://charts.jfrog.io/"
type: "remote"
package: "helm"
base_url: "https://charts.jfrog.io/" package: "helm"
description: "JFrog Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -473,9 +411,7 @@ remotes:
mutable_ttl: 3600
openvox:
base_url: "https://openvoxproject.github.io/openvox-helm-chart"
type: "remote"
package: "helm"
base_url: "https://openvoxproject.github.io/openvox-helm-chart" package: "helm"
description: "OpenVox Helm charts"
check_mutable_updates: true
immutable_patterns:
@@ -484,8 +420,9 @@ remotes:
immutable_ttl: 0
mutable_ttl: 3600
virtuals:
helm-all:
type: "virtual"
package: "helm"
description: "Virtual repository merging all helm remotes — member order is priority order for duplicate chart+version"
members:
@@ -509,8 +446,8 @@ remotes:
- jfrog
- openvox
locals:
local-generic:
type: "local"
package: "generic"
description: "Local generic file repository"
cache: