Skip to main content

Registry

Die Registry ermöglicht den Zugriff auf Metadaten zu verfügbaren Evaluation Stacks

Die Registry bezieht Umgebungen über eine der folgenden Datenquellen, die über die Umgebungsvariable EVA_REGISTRY_PROVIDER konfiguriert werden können:

  • local: Es werden alle Umgebungen ermittelt, die in der lokalen Dockerinstallation als Image zur Verfügung stehen.
  • gitlab: Baut eine Verbindung zur Container Registry in einer GitLab-Installation auf und ermittelt die Umgebungen aus den dort zur Verfügung stehenden Images. Hierfür müssen die Basis URLs von GitLab und der Container Registry mit EVA_REGISTRY_GITLAB_URL und EVA_REGISTRY_GITLAB_DOCKER_REGISTRY_URL angegeben werden. Die Container Registry bezieht sich in GitLab immer auf ein konkretes Projekt, weshalb die Projekt ID (zu finden auf der Startseite des Projekts unter dem Namen) mit EVA_REGISTRY_GITLAB_PROJECT_ID angegeben werden muss. Wenn die Container Registry des Projekts privat ist, muss ein Access Token mit dem read_registry Scope für das Projekt generiert und anschließend über EVA_REGISTRY_GITLAB_USER und EVA_REGISTRY_GITLAB_TOKEN konfiguriert werden.

Die Umgebungen werden von der Registry für eine bestimmte Zeitspanne gecacht. Damit wird die Datenquelle nicht bei jeder Anfrage kontaktiert: Daher kann es etwas dauern, bis neue Umgebungen bzw. Änderungen an Metadaten wirken. Die TTL des Caches kann mit EVA_REGISTRY_CACHE_TTL konfiguriert werden. Die Angabe erfolgt über die Anzahl der Sekunden. Ein Wert von -1 bedeutet, dass die TTL unendlich ist. Deaktiviert werden kann der Cache mit EVA_REGISTRY_CACHE_TTL=0

Der Bezug der Evaluatoren erfolgt über die EvaluatorRegistry Klasse.

Endpunkte

Die Registry hat eine HTTP Schnittstelle, die unter Port 7777 Anfragen entgegen nimmt.

GET /stacks

Gibt alle Evaluation Stacks zurück, die für die Auswertung zur Verfügung stehen.

EvaluatorsResponse: {
stacks: EvaluationStack[],
last_update: string
}
  • evaluators: Verfügbare Evaluation Stacks mit Metadaten
  • last_update: String im ISO8601-Format, der angibt, wann das letzte Update durch die Datenquelle erfolgt ist.
EvaluationStack: {
environment: Environment
evaluator: EvaluatorDeclaration
ref: string
}
  • environment: Metadaten zur Umgebung
  • evaluator: Metadaten zum Evaluator
  • ref: Selektor, siehe unten.
EvaluatorDeclaration: {
id: string
capability: EvaluatorCapability {
compile: bool
test: bool,
coverage: bool,
style: bool
}
supported_envs: string[]
excluded_envs: string[]
default_env: string[]
}
Environment: {
id: string
description: string
maintainer: string
tag: string
ref: string
}
  • id: Eindeutige ID der Umgebung
  • description: Kurze Beschreibung der Umgebung, die dafür gedacht ist, im UI eine kurze Info über den Tech-Stack zu geben.
  • maintainer: Wer für die Wartung zuständig ist
  • tag: Release-Track der Umgebung. Optional (Standard: latest). Bei Docker entspricht dieser Wert dem Tag des Images.
  • ref: Selektor, siehe unten.

GET /stacks/<ref>

Sucht den Evaluation Stack über den übergebenen Selektor ref und gibt die Metadaten zurück, wenn vorhanden. Wenn kein Stack gefunden wurde, wird der Status 404 zurückgegeben.

Der Selektor muss das folgende Format haben:

<evaluator_id>[@(<environment_id>)[:<tag>]]

Beispiele:

  • java: Bezieht sich auf den Evaluator java mit der Standardumgebung und tag = latest
  • java@java19: Bezieht sich auf den Evaluator java mit der java19 Umgebung und tag = latest
GetStackResponse: {
stack: EvaluationStack,
last_update: string
}

Für die Beschreibung der Attribute siehe oben.