Skip to content

fix(release): kcl-Modul auf v0.114.0, sonst zerfaellt jeder mehrzeilige Profilwert - #164

Merged
patrick-hermann-sva merged 1 commit into
mainfrom
fix/kcl-module-multiline
Sep 5, 2026
Merged

fix(release): kcl-Modul auf v0.114.0, sonst zerfaellt jeder mehrzeilige Profilwert#164
patrick-hermann-sva merged 1 commit into
mainfrom
fix/kcl-module-multiline

Conversation

@patrick-hermann-sva

Copy link
Copy Markdown
Contributor

Der Fehler

Beide Release-Workflows publizieren die kustomize-Base über dagger/kcl@v0.82.1. In dieser Version lief der --parameters-file-Pfad über

jq gsub("\n"; "\\n")

in eine -D-Liste: echte Zeilenumbrüche wurden zum Literal \n, KCL emittierte daraufhin einen gequoteten Multiline-Skalar statt eines Block-Literals — und YAML faltet gequotete Skalare beim Lesen zu einer einzigen Zeile. Eingerückter Inhalt ist danach unbrauchbar.

Der Kommentar an kcl/run.go:159 im dagger-Repo beschreibt genau das; behoben ist es seit v0.114.0 (18.05.2026).

Live gesehen

homerun2-git-pitcher:v1.0.0 liefert diese ConfigMap aus:

github: token: env:GITHUB_TOKEN repos: - owner: stuttgart-things name: homerun2-led-catcher interval: 5m ...

Der Pod stirbt beim Start:

{"level":"ERROR","msg":"failed to load watch config","path":"/config/watch-profile.yaml",
 "error":"yaml: mapping values are not allowed in this context"}

homerun2-k8s-pitcher:v1.0.0 ist identisch betroffen (profile.yaml: 'apiVersion: ...).

Reichweite: genau zwei Repos

Ausgelöst wird es nur von einem mehrzeiligen Wert in tests/kcl-deploy-profile.yaml. Von den acht Repos, die über call-go-release.yaml releasen:

Repo mehrzeiliger Key
homerun2-git-pitcher config.watchConfigYaml
homerun2-k8s-pitcher config.profileYaml
core-catcher, demo-pitcher, light-catcher, notification-catcher, omni-pitcher, machinery keiner

Und das sind genau die beiden Komponenten, die auf keinem Cluster liefen — der Bug hat sich hinter „noch nicht deployed" versteckt.

Nachgemessen

Derselbe Source-Stand (homerun2-git-pitcher @ 496adf1), dasselbe Profil, einmal mit v0.114.0 gerendert:

data:
  watch-profile.yaml: |
    github:
      token: env:GITHUB_TOKEN
      repos:
        - owner: stuttgart-things
          name: homerun2-led-catcher
          interval: 5m

Einrückung intakt. Dateiliste identisch zum v1.0.0-Artefakt — acht Ressourcen plus kustomization.yaml, keine zusätzliche und keine fehlende.

Warum v0.114.0 und nicht v0.128.5

call-push-kustomize.yaml in diesem Repo fährt v0.114.0 längst produktiv über den PR-Preview-Pfad. Das ist die kleinste Version mit dem Fix und die einzige, für die es hier bereits Betriebserfahrung gibt. Ein Sprung auf die aktuelle v0.128.5 würde 14 Minor-Versionen ungeprüft mitnehmen.

Bewusst nicht angefasst

call-kcl-validate.yaml bleibt auf v0.82.1. Es veröffentlicht nichts, und ein Modulsprung dort wirkt auf jeden PR in jedem Repo, das die Validierung nutzt. Das gehört separat entschieden — auch wenn man argumentieren kann, dass eine Validierung, die anders rendert als das Release, genau der Grund ist, warum dieser Bug durchkam.

Danach

homerun2-git-pitcher und homerun2-k8s-pitcher brauchen je ein neues Release, damit ein korrigiertes Artefakt entsteht. Die bestehenden v1.0.0-Artefakte bleiben kaputt.

🤖 Generated with Claude Code

https://claude.ai/code/session_019CgKbaC85iWMgfZzpF4SGX

…ge Profilwert

Beide Release-Workflows publizieren die kustomize-Base ueber
dagger/kcl@v0.82.1. In dieser Version lief der --parameters-file-Pfad
ueber `jq gsub("\n"; "\\n")` in eine -D-Liste: echte Zeilenumbrueche
wurden zum Literal \n, KCL emittierte daraufhin einen gequoteten
Multiline-Skalar, und YAML faltet den beim Lesen zu einer einzigen
Zeile. Eingerueckter Inhalt ist danach Muell.

Live gesehen an homerun2-git-pitcher v1.0.0: die ausgelieferte
ConfigMap enthaelt

  github: token: env:GITHUB_TOKEN repos: - owner: stuttgart-things ...

und der Pod stirbt mit "yaml: mapping values are not allowed in this
context". homerun2-k8s-pitcher v1.0.0 ist identisch betroffen
(config.profileYaml). Das sind die einzigen beiden Repos, deren
kcl-deploy-profile.yaml einen mehrzeiligen Wert traegt -- und zufaellig
genau die beiden Komponenten, die nirgends liefen.

dagger/kcl v0.114.0 baut den Parameters-File in eine echte
KCL-Settings-Datei um und haelt Block-Skalare durch. Nachgemessen: mit
v0.114.0 rendert dieselbe Quelle `watch-profile.yaml: |` mit intakter
Einrueckung, sonst byte-gleich.

call-push-kustomize.yaml faehrt v0.114.0 laengst produktiv; die beiden
Release-Pfade waren die Nachzuegler.

call-kcl-validate.yaml bleibt bewusst auf v0.82.1: das Ding
veroeffentlicht nichts, und ein Modulsprung dort wirkt auf jeden PR in
jedem Repo. Separat und bewusst zu entscheiden.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019CgKbaC85iWMgfZzpF4SGX
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant