Skip to content

[FEATURE] Add OCI source annotations to published Helm charts so tools can find release notes #2628

Description

@pwhack

📋 Prerequisites

📝 Feature Summary

Populate org.opencontainers.image.source annotation in Helm chart artifacts so tools like Renovate can find your release notes

❓ Problem Statement / Motivation

Current kagent and kagent-crds Helm charts published to GHCR (OCI) do not contain the org.opencontainers.image.source field. Renovate (and possibly other tools) rely on this field to find the upstream source repo to look for release notes when creating dependency bump PRs/MRs in end-user repos. Your repo already publishes great release notes (example for v0.9.12). Adding this field makes it easy for end-user automation tools to find them.

Currently all end users have to manually map this in automation tools like Renovate (e.g., with a packageRules map). Fixing this in the upstream Helm chart publishing workflows solves the problem for all end user tools that rely on this field.

💡 Proposed Solution

Setting the org.opencontainers.image.source field value to https://github.com/kagent-dev/kagent should help Renovate and other tools find their way to your source repo to consume release notes.

Add the following two lines to kagent-crds Chart-template.yaml and kagent Chart-template.yaml:

annotations:
  "org.opencontainers.image.source": "https://github.com/kagent-dev/kagent"

🔄 Alternatives Considered

Perhaps there is a different location in your chart publishing workflow to inject this field. You know your pipelines better than I do. But the Chart-template.yaml is a valid location.

🎯 Affected Service(s)

Multiple services / System-wide

📚 Additional Context

You can see this for yourself using a simple docker call like this: docker manifest inspect ghcr.io/kagent-dev/kagent/helm/kagent-crds:0.9.12. The annotations map returned contains other org.opencontainers.image.* fields, just not the source field.

docker manifest inspect ghcr.io/kagent-dev/kagent/helm/kagent-crds:0.9.12 | jq .           
{
  "schemaVersion": 2,
  "config": {
    "mediaType": "application/vnd.cncf.helm.config.v1+json",
    "digest": "sha256:c36397247b35c1be1f7d3650438d3346db28a2710d6417aa978ff6459dbc7f6c",
    "size": 376
  },
  "layers": [
    {
      "mediaType": "application/vnd.cncf.helm.chart.content.v1.tar+gzip",
      "digest": "sha256:977e59c4ad7f751f2badea53d5f698220f37a1af28fb282fd7917103a084e7f3",
      "size": 258492
    }
  ],
  "annotations": {
    "org.opencontainers.image.created": "2026-07-20T18:59:25Z",
    "org.opencontainers.image.description": "CRDs for kagent",
    "org.opencontainers.image.title": "kagent-crds",
    "org.opencontainers.image.version": "0.9.12"
  }
}

For context, Renovate's Argo CD handler uses docker mode when the upstream Helm chart is published via OCI, like through GHCR. So the docker handler is what expects to find the org.opencontainers.image.source field in the Helm chart.

🙋 Are you willing to contribute?

  • I am willing to submit a PR for this feature

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions