Skip to content

[Feature Request] Gate per step of a progressive rollout #586

Description

@zainawaisn

Is your feature request related to a problem? Please describe.

item 1 and 2 of Feature Request #365.

Describe the solution you'd like

Gate per step of a progressive rollout, not just at the start. The current gate feature only runs once, before any workflows have been ramped to the new build. I'm imagining a rollout.steps[*].gate field, structured similar to rollout.gate. A step completes when its ramp percentage, pause duration, and gate (if present) have all completed (successfully). I think the simplest semantics are for the ramp change, pause timer, and gate to begin simultaneously; to gate on a stable system, multiple steps can be used.

A failed gate should rollback, not pause. The if wf.Status != WorkflowExecutionStatusCompleted: return nil check means that the pods stay up until human intervention. Currently the pods are not ramped and receive no workflows, but combined with item (1), this would mean the partially ramped build continues to serve a percentage of traffic. The feature request is for a failed gate to cause the new ramping deployment to immediately drain (work in-flight completes). This can be the default for step gates, or configurable.

Additional context

Potential representation of rollout.steps[*].gate on the spec.

rollout:
  strategy: Progressive
  gate:                          # existing: pre-flight, before any traffic
    workflowType: SmokeTest
  steps:
    - rampPercentage: 5
      pauseDuration: 5m
    - rampPercentage: 20
      pauseDuration: 20m
      gate:                      # new: runs while serving 20%
        workflowType: ErrorRateCheck
        input: {"threshold": 0.02}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions