Erstellen einer Helm-CI-Component

(KOP-3271)

Es soll eine Helm-CI-Component "helm" erstellt werden, die Schritte für das Bauen, Testen und Veröffentlichen enthält. Die Komponente soll die Helm-Chart-Version mit maven auslesen, sodass ein Maven-Projekt für die Nutzung der Komponente notwendig ist.

Die GitLab-Helm-Registry, die noch als "Beta" https://docs.gitlab.com/user/packages/helm_repository/ markiert ist, soll zukünftig als primäre Quelle für Helm-Charts werden, jedoch soll in diesem Schritt weiterhin nur push/pull vom Nexus unterstützt werden.

Die Komponente soll als Inputs haben:

  • Step/Stage-Namen
    • job-prefix ("helm"), test-stage ("test"), publish-stage ("publish")
  • Helm-Config
    • deploy-stage-enabled (true)
    • helm-linter-values-file ("src/test/helm-linter-values.yaml")
    • helm-chart-root ("src/main/helm")
    • helm-chart-test-root ("src/test/helm")
    • deploy-to-nexus (true) und deploy-to-gitlab (true) (Mit Hinweis auf geplantes Entfernen dieser Optionen)

Akzeptanzkriterien:

  • Die "test" stage läuft erfolgreich mit Linting und Unit-Tests
  • Die "publish" stage läuft erfolgreich mit Veröffentlichung zum Nexus
    • Für einen branch
      • wird für das gebaute Chart ein Branch-Tag x.x.x-branch-shortsha1 und ein latest tag gepusht (für default branch snapshot-latest sonst x.x.x-branch-latest)
  • Für ein (Release)-Tag
    • wird ein Release-tag x.x.x und latest gepusht
  • Die Helm-Komponente ist für Nutzer verständlich in der Readme dokumentiert

Hinweise

Notwendige Binaries, Skripte und Konfigurations-Dateien sollten in ein eigenes build-image, sodass keine "download" stage notwendig ist.

Nach Abnahme sollte eine Release-Version der helm-Component getaggt werden.

Edited by Jan Zickermann