Description
When upgrading the Helm chart, agent-specific images (e.g. openab-claude, openab-copilot) do not automatically follow the chart's appVersion. Users must manually specify the full image with tag for each agent on every upgrade.
The current openab.agentImage helper in _helpers.tpl treats the agent image field as a raw string — if it's set, it's used as-is with no tag appended:
{{- if and .cfg.image (kindIs "string" .cfg.image) (ne .cfg.image "") }}
{{- .cfg.image }}
{{- else }}
{{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }}
{{- printf "%s:%s" .ctx.Values.image.repository $tag }}
{{- end }}
Only the global image.tag (kiro) benefits from the automatic appVersion fallback.
Use Case
During upgrade from 0.7.7 → 0.7.8-beta.2, running helm upgrade --version 0.7.8-beta.2 -f values.yaml kept claude/copilot on the old 0.7.7 images because the values file had:
agents:
claude:
image: ghcr.io/openabdev/openab-claude:0.7.7
copilot:
image: ghcr.io/openabdev/openab-copilot:0.7.7
Users should be able to set just the repository (ghcr.io/openabdev/openab-claude) and have the chart auto-append the correct version tag, just like the global image does.
Proposed Solution
Add a contains ":" check in the openab.agentImage helper — if the agent image string has no tag, auto-append appVersion:
{{- define "openab.agentImage" -}}
{{- if and .cfg.image (kindIs "string" .cfg.image) (ne .cfg.image "") }}
{{- if contains ":" .cfg.image }}
{{- .cfg.image }}
{{- else }}
{{- printf "%s:%s" .cfg.image (default .ctx.Chart.AppVersion .ctx.Values.image.tag) }}
{{- end }}
{{- else }}
{{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }}
{{- printf "%s:%s" .ctx.Values.image.repository $tag }}
{{- end }}
{{- end }}
This way:
image: ghcr.io/openabdev/openab-claude → auto-resolves to ghcr.io/openabdev/openab-claude:0.7.8-beta.2
image: ghcr.io/openabdev/openab-claude:custom → stays as-is (explicit pin)
- No
image set → falls back to global image.repository:appVersion (current behavior)
Fully backward compatible — existing values with explicit tags continue to work unchanged.
Discord: https://discord.com/channels/1488041051187974246/1494843603103645737
Description
When upgrading the Helm chart, agent-specific images (e.g.
openab-claude,openab-copilot) do not automatically follow the chart'sappVersion. Users must manually specify the full image with tag for each agent on every upgrade.The current
openab.agentImagehelper in_helpers.tpltreats the agentimagefield as a raw string — if it's set, it's used as-is with no tag appended:{{- if and .cfg.image (kindIs "string" .cfg.image) (ne .cfg.image "") }} {{- .cfg.image }} {{- else }} {{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }} {{- printf "%s:%s" .ctx.Values.image.repository $tag }} {{- end }}Only the global
image.tag(kiro) benefits from the automaticappVersionfallback.Use Case
During upgrade from
0.7.7→0.7.8-beta.2, runninghelm upgrade --version 0.7.8-beta.2 -f values.yamlkept claude/copilot on the old0.7.7images because the values file had:Users should be able to set just the repository (
ghcr.io/openabdev/openab-claude) and have the chart auto-append the correct version tag, just like the global image does.Proposed Solution
Add a
contains ":"check in theopenab.agentImagehelper — if the agent image string has no tag, auto-appendappVersion:{{- define "openab.agentImage" -}} {{- if and .cfg.image (kindIs "string" .cfg.image) (ne .cfg.image "") }} {{- if contains ":" .cfg.image }} {{- .cfg.image }} {{- else }} {{- printf "%s:%s" .cfg.image (default .ctx.Chart.AppVersion .ctx.Values.image.tag) }} {{- end }} {{- else }} {{- $tag := default .ctx.Chart.AppVersion .ctx.Values.image.tag }} {{- printf "%s:%s" .ctx.Values.image.repository $tag }} {{- end }} {{- end }}This way:
image: ghcr.io/openabdev/openab-claude→ auto-resolves toghcr.io/openabdev/openab-claude:0.7.8-beta.2image: ghcr.io/openabdev/openab-claude:custom→ stays as-is (explicit pin)imageset → falls back to globalimage.repository:appVersion(current behavior)Fully backward compatible — existing values with explicit tags continue to work unchanged.
Discord: https://discord.com/channels/1488041051187974246/1494843603103645737