Skip to content

Helm chart: auto-append appVersion tag to agent images without explicit tag #433

@JARVIS-coding-Agent

Description

@JARVIS-coding-Agent

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.70.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

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions