Skip to main content

Publishing charts

Charts are packaged and pushed to the GitLab OCI registry by .gitlab-ci.yml on every push to main.

What triggers a publish

The package_charts job walks every Helm chart under k8s/helm/charts/ and decides whether to publish each one based on the diff:

  1. Normal commit: a chart is published only if its Chart.yaml version: line changed in this commit range.
  2. [FORCE-PUBLISH] in the commit message: every chart is republished regardless of diff.

So bumping a chart's version is what releases it. If you change template files without bumping the version, nothing new is pushed.

Where they land

oci://registry.gitlab.com/onyourmarks/k8s/oym-k8s-cluster/helm/<chart-name>:<version>

The generated ArgoCD Application resources reference this URL via repoURL: oci://... with targetRevision taken from parameters.chartVersion in each project's definition/xplatformapp.yaml.

Rolling a new chart version out

Publishing alone changes nothing on the cluster. To roll template changes out:

  1. Bump chartVersion in every k8s/app/platform/*/definition/xplatformapp.yaml that uses the chart (a fleet-wide bump is one commit touching all of them).
  2. Merge to main.
  3. Run ./argocd/sync-apps.shXPlatformApp definitions are applied by that script, not synced by ArgoCD.

Component versions

Components also live under k8s/helm/charts/components/ and are published the same way. App charts pin component versions in their Chart.yaml:

dependencies:
- name: component-tasks
version: "1.2.12"
repository: "file://../components/tasks"

When you bump a component, also bump every app chart that depends on it (so the dependency lock and the published bundle stay consistent).