release(hermes): bind block-style HUX build metadata
The env setters moved to block style so Flux can rewrite them; the renderer belt now matches the same shape and the release test asserts the bound value lines rather than the old flow mapping. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BvMSXH8VH2tMWXanb8SJdf
This commit is contained in:
parent
09ba5f8ac0
commit
043aa9ee89
@ -101,8 +101,12 @@ def render_hux_build_metadata(
|
||||
"HUX_IMAGE_DIGEST": digest,
|
||||
}
|
||||
rendered = source
|
||||
# Block style only: Flux setters cannot attach to values inside flow
|
||||
# mappings, so the manifest keeps these as two-line entries with the
|
||||
# marker comment on the value scalar. The renderer stays a belt on top
|
||||
# of the Flux :tag/:digest setters and binds the same values.
|
||||
present = {
|
||||
name: rendered.count(f"- {{name: {name}, value:") for name in replacements
|
||||
name: rendered.count(f"- name: {name}\n") for name in replacements
|
||||
}
|
||||
if set(present.values()) == {0}:
|
||||
return rendered
|
||||
@ -110,13 +114,13 @@ def render_hux_build_metadata(
|
||||
raise ValueError(f"incomplete HUX build binding fields: {present}")
|
||||
for name, value in replacements.items():
|
||||
pattern = re.compile(
|
||||
rf"^(?P<indent>\s*)- \{{name: {name}, value: '[^'\n]+'\}}(?P<suffix>[^\n]*)$",
|
||||
rf"^(?P<head>(?P<indent>\s*)- name: {name}\n(?P=indent) value: )"
|
||||
rf"[^#\n]+(?P<suffix> #[^\n]*)?$",
|
||||
re.MULTILINE,
|
||||
)
|
||||
rendered, count = pattern.subn(
|
||||
lambda match: (
|
||||
f"{match.group('indent')}- {{name: {name}, value: '{value}'}}"
|
||||
f"{match.group('suffix')}"
|
||||
f"{match.group('head')}{value}{match.group('suffix') or ''}"
|
||||
),
|
||||
rendered,
|
||||
)
|
||||
|
||||
@ -195,11 +195,15 @@ def test_renderer_updates_exact_chat_and_dashboard_webui_only(tmp_path: Path) ->
|
||||
)
|
||||
assert patch.count(f"+ image: {module.DEFAULT_IMAGE}@{digest}") == chat_consumers + 1
|
||||
if "HUX_IMAGE_TAG" in CHAT.read_text(encoding="utf-8"):
|
||||
assert (
|
||||
"+ - {name: HUX_IMAGE_TAG, value: "
|
||||
f"'git-{kwargs['source_revision']}-build-{kwargs['build_number']}-release'}}"
|
||||
) in patch
|
||||
assert f"+ - {{name: HUX_IMAGE_DIGEST, value: '{digest}'}}" in patch
|
||||
tag = f"git-{kwargs['source_revision']}-build-{kwargs['build_number']}-release"
|
||||
assert any(
|
||||
line.startswith("+") and line.lstrip("+ ").startswith(f"value: {tag}")
|
||||
for line in patch.splitlines()
|
||||
), patch
|
||||
assert any(
|
||||
line.startswith("+") and line.lstrip("+ ").startswith(f"value: {digest}")
|
||||
for line in patch.splitlines()
|
||||
), patch
|
||||
assert "services/hermes/chat-statefulset.yaml" in patch
|
||||
assert "services/hermes/deployment.yaml" in patch
|
||||
assert "hermes-agent@sha256" not in "\n".join(
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user