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:
- install base version of ArgoCD
- render base apps
- if target ArgoCD version different than base version, then upgrade the helm chart installation (no need to uninstall/reinstall i think ?)
- 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)
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-versionargument would keep functioning as the "target" version and would be the default for the "base" version when not specified.Internally, the tool would:
Limits
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)