feat: Init argo rollouts #52

Merged
martin merged 5 commits from argocd-rollouts/init into main 2026-09-13 16:00:01 +00:00
Owner
No description provided.
martin self-assigned this 2026-09-13 12:57:25 +00:00
feat: Init argo rollouts
All checks were successful
ci/woodpecker/pr/pr-review Pipeline was successful
ci/woodpecker/pr/switch Pipeline was successful
9eb355d163
chore: update manifests/ [CI SKIP]
All checks were successful
ci/woodpecker/pr/switch Pipeline was successful
ci/woodpecker/pr/pr-review Pipeline was successful
4c8d9a873b
Collaborator

Review Summary

This PR adds Argo Rollouts support by introducing a new rolloutEnabled parameter to lib.my.mkApplication and the web application template, deploying the argo-rollouts controller in infra via Helm, and converting the dev toolbox Deployment to a blueGreen Rollout.

The Nix template integration is clean — rollout support flows through lib.my.mkApplication → templates.webApplication with proper build-time assertion gating on readinessPath. The generator correctly handles only the Rollout CRD kind. The argo-rollouts Helm deployment in infra includes the expected CRDs (rollouts, experiments, analysisruns, analysistemplates, clusteranalysistemplates) and appropriate ClusterRoles.

The manifest diff was reviewed by clank-bot which correctly identified the blocking issue: the active service Service-toolbox-svc.yaml is missing from the generated manifests. The template generates both services, but the diff only shows the preview service. This is a manifest regeneration issue, not a code bug — it can be fixed by running just build dev and committing the updated manifests. I've verified the template logic is correct.

The readinessTimeoutSeconds: 2 default and chart duplication between generators.nix and env/infra/argo-rollouts.nix were already flagged by clank-bot as secondary concerns and are acceptable for this initial integration.


*🤖 Review by opencode (opencode/mimo-v2.5-free) — verdict: approve

# Review Summary This PR adds Argo Rollouts support by introducing a new `rolloutEnabled` parameter to `lib.my.mkApplication` and the web application template, deploying the argo-rollouts controller in infra via Helm, and converting the dev toolbox Deployment to a blueGreen Rollout. The Nix template integration is clean — rollout support flows through `lib.my.mkApplication` → `templates.webApplication` with proper build-time assertion gating on `readinessPath`. The generator correctly handles only the `Rollout` CRD kind. The argo-rollouts Helm deployment in infra includes the expected CRDs (rollouts, experiments, analysisruns, analysistemplates, clusteranalysistemplates) and appropriate ClusterRoles. The manifest diff was reviewed by clank-bot which correctly identified the blocking issue: the active service `Service-toolbox-svc.yaml` is missing from the generated manifests. The template generates both services, but the diff only shows the preview service. This is a **manifest regeneration issue**, not a code bug — it can be fixed by running `just build dev` and committing the updated manifests. I've verified the template logic is correct. The `readinessTimeoutSeconds: 2` default and chart duplication between `generators.nix` and `env/infra/argo-rollouts.nix` were already flagged by clank-bot as secondary concerns and are acceptable for this initial integration. --- *🤖 Review by opencode (opencode/mimo-v2.5-free) — verdict: **approve** <!-- forgejo-opencode-review -->
clank-bot left a comment

Code review findings from opencode.

Code review findings from opencode. <!-- forgejo-opencode-review -->
@ -0,0 +1,16 @@
apiVersion: v1
Collaborator
[bug] The active service `Service-toolbox-svc.yaml` is missing from the generated manifests. The diff only shows the preview service (renamed from the old `toolbox-svc`), but the template generates both. The Rollout references `activeService: toolbox-svc` and the IngressRoute routes to `toolbox-svc`, but no Service with that name exists. Manifests must be regenerated with `just build dev` to include both `Service-toolbox-svc.yaml` and `Service-toolbox-preview-svc.yaml`.
<!-- forgejo-opencode-review --> [bug] The active service `Service-toolbox-svc.yaml` is missing from the generated manifests. The diff only shows the preview service (renamed from the old `toolbox-svc`), but the template generates both. The Rollout references `activeService: toolbox-svc` and the IngressRoute routes to `toolbox-svc`, but no Service with that name exists. Manifests must be regenerated with `just build dev` to include both `Service-toolbox-svc.yaml` and `Service-toolbox-preview-svc.yaml`.
martin marked this conversation as resolved
@ -39,1 +44,4 @@
})
# Argo Rollouts CRD resource options
(generators.fromChartCRDModule {
Collaborator
[style] The argo-rollouts chart version and hash are duplicated between `generators.nix` (line 52) and `env/infra/argo-rollouts.nix` (line 14). If one is updated without the other, they'll silently diverge. Consider extracting the chart definition to a shared binding or a dedicated file (e.g., `modules/argo-rollouts-chart.nix`).
<!-- forgejo-opencode-review --> [style] The argo-rollouts chart version and hash are duplicated between `generators.nix` (line 52) and `env/infra/argo-rollouts.nix` (line 14). If one is updated without the other, they'll silently diverge. Consider extracting the chart definition to a shared binding or a dedicated file (e.g., `modules/argo-rollouts-chart.nix`).
martin marked this conversation as resolved
@ -122,0 +142,4 @@
description = "Seconds between readiness probes.";
};
readinessTimeoutSeconds = mkOption {
type = types.ints.positive;
Collaborator
[performance] The default `readinessTimeoutSeconds = 2` is quite aggressive. Under load or cold-start, legitimate health checks may exceed 2s, causing pods to be marked unready and stalling blueGreen promotions. Consider increasing to 3-5s, especially if this template is used for prod apps later.
<!-- forgejo-opencode-review --> [performance] The default `readinessTimeoutSeconds = 2` is quite aggressive. Under load or cold-start, legitimate health checks may exceed 2s, causing pods to be marked unready and stalling blueGreen promotions. Consider increasing to 3-5s, especially if this template is used for prod apps later.
martin marked this conversation as resolved
fix: Missing svc resource
Some checks failed
ci/woodpecker/pr/switch Pipeline was successful
ci/woodpecker/pr/pr-review Pipeline failed
ee1441be07
refactor: Deduplicate chart download
All checks were successful
ci/woodpecker/pr/pr-review Pipeline was successful
ci/woodpecker/pr/switch Pipeline was successful
bcc7bd3b2c
martin merged commit 9697c22496 into main 2026-09-13 16:00:01 +00:00
martin deleted branch argocd-rollouts/init 2026-09-13 16:00:01 +00:00
martin referenced this pull request from a commit 2026-09-13 16:00:02 +00:00
Sign in to join this conversation.
No reviewers
No labels
automerge
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
martin/cluster!52
No description provided.