Skip to content

docs(argo-cd): publish HelmReplacementPath OCL property + clarify valueFiles handling for Update Image Tags step#3141

Open
vlussenburg wants to merge 4 commits into
OctopusDeploy:mainfrom
vlussenburg:docs/argocd-update-image-tags-helm-replacement-path
Open

docs(argo-cd): publish HelmReplacementPath OCL property + clarify valueFiles handling for Update Image Tags step#3141
vlussenburg wants to merge 4 commits into
OctopusDeploy:mainfrom
vlussenburg:docs/argocd-update-image-tags-helm-replacement-path

Conversation

@vlussenburg
Copy link
Copy Markdown

@vlussenburg vlussenburg commented May 11, 2026

Two gaps in the Update Argo CD Application Image Tags doc that bit me on a CaC project.

The OCL property name for "Helm image tag path" isn't documented. The UI field is described, but if you're editing deployment_process.ocl by hand you need to know it serialises to HelmReplacementPath on the package reference (resolved deployment-time as Octopus.Action.Package[<ref>].HelmReplacementPath). I found this by reading PackageVariables.HelmReplacementPath in Calamari. The OCL save silently strips unknown property names, so guessing HelmImageTagPath (or similar) gives no error — the step just runs as a no-op forever. Added an OCL example.

The "For Helm charts" section reads as if only the chart's default values.yaml is touched. In practice, when HelmReplacementPath is set, the step also writes to every file listed in the Application's spec.source.helm.valueFiles (see HelmUpdater.ProcessHelmSourceUsingStepVariables). Inline spec.source.helm.valuesObject is not written — worth calling out, since users with valuesObject-based Applications will otherwise chase missing tag bumps. Rewrote the bullets to spell out both code paths and the valuesObject limitation.

Found while debugging an Octopus + Argo CD setup that ran "Success" but reported Nothing to update for Application for days — one guessed OCL property, one valuesObject Application.

…behaviour

Two related gaps in the Update Argo CD Application Image Tags doc that
trip up Config-as-Code users:

1. **OCL property name is undocumented.** The page describes the
   "Helm image tag path" UI field but never names the OCL/HCL key it
   serialises to. Users editing deployment_process.ocl directly have to
   read Calamari source (PackageVariables.HelmReplacementPath) to find
   that the field is `HelmReplacementPath` on the package reference and
   the resolved variable is `Octopus.Action.Package[<ref>].HelmReplacementPath`.
   Octopus silently strips unrecognised property names from saved OCL,
   so guessing (`HelmImageTagPath`, `Octopus.Action.ArgoCD.HelmImageTagPath`,
   etc.) yields no error — the step just stays a no-op at runtime, which
   is hard to diagnose. Added an OCL-focused info block with a complete
   package block example.

2. **"Helm charts" section understates what the step writes to.** The
   page says "matching image tags in the values.yaml are replaced",
   which reads as if only the chart's default values.yaml is touched.
   In practice, when `HelmReplacementPath` is set, the step ALSO writes
   to every file listed in the Application's spec.source.helm.valueFiles
   (verified against
   Calamari/source/Calamari/ArgoCD/Conventions/UpdateImageTag/HelmUpdater.cs
   `ProcessHelmSourceUsingStepVariables`). This is the behaviour any
   real per-env Helm-on-Argo setup depends on. Conversely, inline
   `spec.source.helm.valuesObject` is NOT written — also worth calling
   out so people don't go hunting.

   Rewrote the section to spell out both paths (step-configured vs
   annotation-driven) and the valuesObject limitation explicitly.
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented May 11, 2026

CLA assistant check
All committers have signed the CLA.

Copy link
Copy Markdown
Contributor

@rain-on rain-on left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants