-
Notifications
You must be signed in to change notification settings - Fork 5
fix(core): make migration Job hooks stable across Helm + ArgoCD #358
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,6 +1,6 @@ | ||
| dependencies: | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| digest: sha256:29b6f82721cb8cb5ffc9fb8f4a15c0368bd43323551b1aec43c9d24f559ec24a | ||
| generated: "2026-03-13T11:53:02.207688+01:00" | ||
| version: 1.6.0 | ||
| digest: sha256:6d15ce1c622425ece61bcf8f444d16ee5462059a286ef39b2cd78723e91b705f | ||
| generated: "2026-06-22T09:26:38.333292+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,12 @@ | ||
| dependencies: | ||
| - name: membership | ||
| repository: file://../membership | ||
| version: 3.5.0 | ||
| version: 3.6.0 | ||
| - name: portal | ||
| repository: file://../portal | ||
| version: 3.6.2 | ||
| version: 3.7.0 | ||
| - name: console-v3 | ||
| repository: file://../console-v3 | ||
| version: 3.6.2 | ||
| digest: sha256:44566bf3148e8cfc5b4e515caf5afcee42eb0f046b5d503ff16b3d70efa3eace | ||
| generated: "2026-06-15T11:00:08.043908+02:00" | ||
| version: 3.7.0 | ||
| digest: sha256:daed3f4af5ace511de313180abe29e55726644ec51b9acd1a895b1e66ed41369 | ||
| generated: "2026-06-22T09:33:02.325748+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,9 @@ | ||
| dependencies: | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| version: 1.6.0 | ||
| - name: postgresql | ||
| repository: oci://registry-1.docker.io/bitnamicharts | ||
| version: 18.7.3 | ||
| digest: sha256:94f58a97ea12e8fade08b77e895cd51c19428d0c026001235cedde428c76eb03 | ||
| generated: "2026-06-09T14:59:37.072444+02:00" | ||
| version: 18.7.6 | ||
| digest: sha256:2de666ebc52f71210ae299061f7d473e5ab0480dab96d22deb0ad4c348519066 | ||
| generated: "2026-06-22T09:26:55.92648+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,13 +1,28 @@ | ||
| {{/** | ||
|
|
||
| This way is only reliable when using helm install and helm upgrade. | ||
| ArgoCD use helm template | ||
|
|
||
| Hook annotations for a migration Job — works under plain `helm | ||
| install/upgrade` AND ArgoCD (which auto-translates Helm hook | ||
| annotations to its native PreSync/BeforeHookCreation/sync-wave). | ||
|
|
||
| Gated by `.Values.feature.migrationHooks` so consumers can opt | ||
| out (e.g. when running migrations via a separate orchestrator). | ||
|
|
||
| - `pre-install,pre-upgrade` keeps the Job's identity stable as a | ||
| hook in BOTH install and upgrade. The previous | ||
| `pre-upgrade`-only-on-upgrade gate meant the resource was a plain | ||
| release object on install and flipped to a hook on the next | ||
| upgrade, which produced "Job already exists" errors and orphans | ||
| on uninstall. | ||
|
|
||
| - `before-hook-creation` deletes the previous Job before recreating | ||
| so image bumps and other spec changes don't hit Job-spec | ||
| immutability. `hook-succeeded` is intentionally NOT here so | ||
| operators can `kubectl logs` post-success; cleanup is bounded by | ||
| `ttlSecondsAfterFinished` on the Job spec. | ||
| **/}} | ||
| {{- define "core.job.annotations" -}} | ||
| {{- if and (not .Release.IsInstall) .Values.feature.migrationHooks }} | ||
| helm.sh/hook: pre-upgrade | ||
| helm.sh/hook-delete-policy: before-hook-creation,hook-succeeded,hook-failed | ||
| {{- if .Values.feature.migrationHooks }} | ||
| helm.sh/hook: pre-install,pre-upgrade | ||
|
Dav-14 marked this conversation as resolved.
Dav-14 marked this conversation as resolved.
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🟠 [major] Avoid running bundled-DB migrations as pre-install hooks For charts that use the bundled PostgreSQL dependency (for example membership defaults to |
||
| helm.sh/hook-delete-policy: before-hook-creation | ||
| helm.sh/hook-weight: "10" | ||
| {{- end }} | ||
| {{- end }} | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,12 @@ | ||
| dependencies: | ||
| - name: postgresql | ||
| repository: oci://registry-1.docker.io/bitnamicharts | ||
| version: 18.7.3 | ||
| version: 18.7.6 | ||
| - name: regions | ||
| repository: file://../regions | ||
| version: 3.10.7 | ||
| version: 3.11.0 | ||
| - name: cloudprem | ||
| repository: file://../cloudprem | ||
| version: 4.9.2 | ||
| digest: sha256:ab00bb5977dbfacbd126cff2c1745fbd0e6110d197f74e273586f805cb5c33f2 | ||
| generated: "2026-06-15T11:54:47.440585+02:00" | ||
| version: 4.10.0 | ||
| digest: sha256:e6e6353c32fc72665265ce60d619cb75a12a10de216257d8a5629abefb57d658 | ||
| generated: "2026-06-22T09:33:03.509948+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,12 @@ | ||
| dependencies: | ||
| - name: postgresql | ||
| repository: oci://registry-1.docker.io/bitnamicharts | ||
| version: 18.7.3 | ||
| version: 18.7.6 | ||
| - name: dex | ||
| repository: https://charts.dexidp.io | ||
| version: 0.24.1 | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| digest: sha256:f516e5a8711af3c7a57a609c043c3eb83aa8b5db56ccc4e8c449b66f09725253 | ||
| generated: "2026-06-09T14:59:33.302603+02:00" | ||
| version: 1.6.0 | ||
| digest: sha256:b130a654a9fd60d5f6da5bf73a0d9710e10060b2a54a163662392f1206835f9a | ||
| generated: "2026-06-22T09:26:52.299904+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,9 @@ | ||
| dependencies: | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| version: 1.6.0 | ||
| - name: postgresql | ||
| repository: oci://registry-1.docker.io/bitnamicharts | ||
| version: 18.7.3 | ||
| digest: sha256:94f58a97ea12e8fade08b77e895cd51c19428d0c026001235cedde428c76eb03 | ||
| generated: "2026-06-09T14:59:22.340965+02:00" | ||
| version: 18.7.6 | ||
| digest: sha256:2de666ebc52f71210ae299061f7d473e5ab0480dab96d22deb0ad4c348519066 | ||
| generated: "2026-06-22T09:26:42.312172+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,12 +1,12 @@ | ||
| dependencies: | ||
| - name: agent | ||
| repository: file://../agent | ||
| version: 2.14.0 | ||
| version: 2.15.0 | ||
| - name: operator | ||
| repository: oci://ghcr.io/formancehq/helm | ||
| version: 3.11.2 | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| digest: sha256:866749c40f0605be3ee16788b1a99cacc325faf749bafa44da87479d1092e164 | ||
| generated: "2026-06-12T12:28:48.576894+02:00" | ||
| version: 1.6.0 | ||
| digest: sha256:ac7f9226c98c82d59e82c848beb4021e1d26e13b33772d22f721f04f79c9967d | ||
| generated: "2026-06-22T09:32:46.086595+02:00" |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,9 +1,9 @@ | ||
| dependencies: | ||
| - name: core | ||
| repository: file://../core | ||
| version: 1.5.1 | ||
| version: 1.6.0 | ||
| - name: postgresql | ||
| repository: oci://registry-1.docker.io/bitnamicharts | ||
| version: 15.5.38 | ||
| digest: sha256:663ca8c28a6de42337fb1f7a30d6588113b6c7150f0a053edf0886641da186e8 | ||
| generated: "2026-03-13T11:53:12.310361+01:00" | ||
| digest: sha256:3487d243930e76ecf46e3ad85dffa3367623fa55d4755b20975f88ffac17aa7a | ||
| generated: "2026-06-22T09:26:46.18892+02:00" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🔴 [blocker] Remove the migrationHooks gate for job hooks
When
feature.migrationHooksis false (the default in the consuming charts) or a consumer drops the deprecated value, this helper now emits no annotations at all, so migration Jobs are still rendered as normal release resources under Helm/ArgoCD and retain the existing first-upgrade/Job immutability failure mode. The hook annotations need to be emitted independently of this value for the new lifecycle to apply.