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 mitEVA_REGISTRY_GITLAB_URL
undEVA_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) mitEVA_REGISTRY_GITLAB_PROJECT_ID
angegeben werden muss. Wenn die Container Registry des Projekts privat ist, muss ein Access Token mit demread_registry
Scope für das Projekt generiert und anschließend überEVA_REGISTRY_GITLAB_USER
undEVA_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 Metadatenlast_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 Umgebungevaluator
: Metadaten zum Evaluatorref
: 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[]
}
id
: Eindeutige ID des Evaluatorscapability
: Siehe Evaluatoren.supported_envs
: Siehe Evaluatorenexcluded_envs
: Siehe Evaluatorendefault_env
: Siehe Evaluatoren
Environment: {
id: string
description: string
maintainer: string
tag: string
ref: string
}
id
: Eindeutige ID der Umgebungdescription
: 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 isttag
: 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 Evaluatorjava
mit der Standardumgebung undtag = latest
java@java19
: Bezieht sich auf den Evaluatorjava
mit derjava19
Umgebung undtag = latest
GetStackResponse: {
stack: EvaluationStack,
last_update: string
}
Für die Beschreibung der Attribute siehe oben.