Context
Currently, Renovate PRs that update Helm chart versions or image tags are auto-merged (patch/minor) without any functional validation. If a chart upgrade contains a breaking change, it only surfaces after merge and ArgoCD sync — i.e. in production.
Goal
Implement ephemeral environment testing on Renovate PRs before merge to:
- Deploy the proposed chart/image change to a short-lived namespace or cluster
- Run smoke tests / health checks against the ephemeral deployment
- Report pass/fail back to the PR as a required status check
- Block
platformAutomerge until the check passes
- Tear down the ephemeral environment after the check
Proposed approach
- Trigger: GitHub Actions workflow on
pull_request targeting main, filtered on paths gitops/manifests/**
- Ephemeral namespace: create
renovate-test-<pr-number> namespace in the genmachine cluster (via kubectl or ArgoCD CLI)
- Deploy:
helm install the changed chart with the PR values against the ephemeral namespace
- Validate: run a configurable health-check (e.g.
kubectl rollout status, HTTP probe, or a dedicated test job)
- Cleanup: delete the namespace on workflow completion (success or failure)
- Status check: set as required in branch protection to block Renovate automerge
Considerations
- Needs cluster access from GitHub Actions (kubeconfig secret or OIDC)
- Renovate
automerge should be gated on this check passing (requiredStatusChecks)
- Some charts (storage, CRDs) may need special handling or exclusion
- Cost: ephemeral namespaces are cheap but CI time increases
Tasks
Context
Currently, Renovate PRs that update Helm chart versions or image tags are auto-merged (patch/minor) without any functional validation. If a chart upgrade contains a breaking change, it only surfaces after merge and ArgoCD sync — i.e. in production.
Goal
Implement ephemeral environment testing on Renovate PRs before merge to:
platformAutomergeuntil the check passesProposed approach
pull_requesttargetingmain, filtered on pathsgitops/manifests/**renovate-test-<pr-number>namespace in thegenmachinecluster (viakubectlor ArgoCD CLI)helm installthe changed chart with the PR values against the ephemeral namespacekubectl rollout status, HTTP probe, or a dedicated test job)Considerations
automergeshould be gated on this check passing (requiredStatusChecks)Tasks
automergeStrategyto respect the check