Aller au contenu

Stockage et santé

Stockage

Système de fichiers

toml
[storage]
type = "filesystem"
path = "/var/cache/batlehub"

Compatible S3 (AWS S3, RustFS)

toml
[storage]
type   = "s3"
bucket = "batlehub-artifacts"
region = "us-east-1"

# Pour un S3 auto-hébergé (RustFS) : déclarez un endpoint personnalisé
# endpoint_url     = "http://rustfs:9900"
# force_path_style = true

Le bloc n'accepte aucun identifiant, et une clé inconnue y est ignorée plutôt que refusée. Ils viennent de la chaîne du SDK AWS — un rôle IAM, ou AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY dans l'environnement.

Stockage multi-backend

Des registres différents peuvent employer des backends différents — par exemple le système de fichiers pour la plupart et un S3 dédié aux gros artefacts de releases GitHub :

toml
[storage]
type = "filesystem"
path = "/var/cache/batlehub"

[[storage.backends]]
name = "github-s3"
type = "s3"
bucket = "batlehub-github"
region = "us-east-1"

[[registries]]
type    = "github"
name    = "github"
storage = "github-s3"

S3 avec RustFS (auto-hébergé)

Démarrez RustFS par le fichier Compose fourni, puis créez le bucket :

sh
task compose:s3:db            # démarre RustFS + Postgres + Authentik
rc alias set local http://localhost:9900 rustfsadmin rustfsadmin
rc bucket create local/artifacts   # ou : task compose:s3:bucket:create
task run:s3                   # lance le serveur avec la configuration S3

Santé et observabilité

L'endpoint de santé

sh
curl -H "Authorization: Bearer <admin-token>" \
  http://localhost:8080/api/v1/admin/health

Renvoie l'état par registre (joignabilité de l'amont, taux de hit du cache) et l'état global du serveur.

Vider le cache d'un registre

Force la prochaine requête sur n'importe quel paquet du registre à repasser par l'amont :

sh
curl -X POST \
  -H "Authorization: Bearer <admin-token>" \
  http://localhost:8080/api/v1/admin/registries/npm/clear-cache

OpenTelemetry (Jaeger, Tempo)

Activez le traçage distribué en ajoutant un bloc [otel] :

toml
[otel]
endpoint = "http://jaeger:4317"

Démarrez la pile d'observabilité complète en local :

sh
task compose:otel   # démarre Postgres, le serveur et Jaeger

Puis ouvrez http://localhost:16686 pour la console Jaeger.

Publié sous licence Apache 2.0. Fait avec ❤️ et beaucoup trop de ☕.