Skip to content

Feature request | Render base and target branches with different Argo CD versions #484

Description

@fouadchamoun

Problem

Today, diff preview could be misleading in case ArgoCD itself is being updated.

For example, the recent ArgoCD Helm chart update from 10.2.2 to 10.2.3 (seemingly patch) upgraded ArgoCD from 3.4.6 to 3.5.0, which brought with it an upgrade from Helm 3 to Helm 4.

The Helm upgrade has a hidden breaking change that affects "null" overrides in values, and thus resulted in unwanted rendering changes in some of my apps.

Those changes were invisible in the ArgoCD diff because the base and target apps were rendered by the same ArgoCD version (the new one).

Proposed solution

Add the ability to render the base and target apps with different ArgoCD versions.

We could add a --argocd-chart-version-base.

The original --argocd-chart-version argument would keep functioning as the "target" version and would be the default for the "base" version when not specified.

Internally, the tool would:

  1. install base version of ArgoCD
  2. render base apps
  3. if target ArgoCD version different than base version, then upgrade the helm chart installation (no need to uninstall/reinstall i think ?)
  4. render target apps

Limits

  • this would only work in Ephemeral Cluster Mode
  • i have not yet checked what other internal logic would be impacted

Contributing

I would be happy to try to contribute this, in case you think it's a good idea :)

Current workaround

I run the tool twice and extract the output manifests for base and target from the corresponding run.
I then have to rebuild the diff.md from scratch, and thus lose the useful built-in diff formatting.
This feels very clunky and hacky.
Workaround code: https://github.com/fouadchamoun/homelab/blob/05f5377bcfec8ccae3076fa28498fa32d45fe491/.github/workflows/generate-diff.yml
Example output from workaround: fouadchamoun/homelab#409 (comment)
(you can see the unwanted diff in one app, caused by the hidden Helm update)

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions