feat(dashboard): add a live timing bar to canary pause steps - #4836
feat(dashboard): add a live timing bar to canary pause steps#4836apellex wants to merge 17 commits into
Conversation
Published E2E Test Results 4 files 4 suites 4h 8m 44s ⏱️ For more details on these failures, see this check. Results for commit f78cf21. ♻️ This comment has been updated with latest results. |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## master #4836 +/- ##
==========================================
+ Coverage 85.17% 85.23% +0.05%
==========================================
Files 166 166
Lines 19453 19475 +22
==========================================
+ Hits 16570 16600 +30
+ Misses 2030 2020 -10
- Partials 853 855 +2
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Published Unit Test Results2 629 tests 2 629 ✅ 3m 30s ⏱️ Results for commit f78cf21. ♻️ This comment has been updated with latest results. |
Add a pauseStartTime field to the RolloutInfo API message, populated from the CanaryPauseStep pause condition (RFC3339 UTC), so the UI can tell how far a timed pause has progressed. Regenerates proto, swagger, and TS artifacts, and covers the builder with a unit test. Signed-off-by: Vũ (Alex) Nguyễn <vu@apella.io>
Fill the current pause step's card left-to-right as a timed pause elapses, giving an at-a-glance sense of time remaining; indefinite pauses are unchanged. Timing is derived client-side from the server-provided pauseStartTime, so it stays accurate across reloads. The fill runs as a single CSS transition over the remaining time (no per-second ticking), so it sweeps smoothly from mount to completion. Adds pure, unit-tested helpers (durationToSeconds, computePauseProgress) and a PauseProgressBar component. Signed-off-by: Vũ (Alex) Nguyễn <vu@apella.io>
watchOptions is no longer valid under devServer; move it to the top-level webpack config so `pnpm --dir ui start` runs. Signed-off-by: Vũ (Alex) Nguyễn <vu@apella.io>
e9dc2a3 to
a20b1fb
Compare
|
Related? #4617 |
@kostis-codefresh yes it is related, however:
|
|
Hey. I took a quick look, and this seems to address only the UI. But the original issue says "In both the CLI and the UI". Was the CLI side intentionally left out for another PR, or was it out of scope for now? I am asking because if this PR gets merged then the original issue will be autoclosed. |
@kostis-codefresh Thanks for the review. Honestly it was left out because I personally don't use the CLI. |
5596a84 to
742a1dd
Compare
@kostis-codefresh PR description updated to include clip showing the "Pause: Xs remaining" in the CLI |
Add a PauseRemaining line to the canary summary of `kubectl argo rollouts get rollout` when the rollout is paused on a timed pause step, computed from the pause condition start time (now on RolloutInfo) and the step duration. Indefinite pauses and non-paused steps are unaffected. This brings the CLI to parity with the dashboard so argoproj#1183 is fully addressed. Signed-off-by: Vũ (Alex) Nguyễn <vu@apella.io>
742a1dd to
cc22d06
Compare
|



Adds a live "time remaining" indicator for timed canary pauses — in both the dashboard and the
kubectl argo rolloutsCLI — so you can see at a glance how long until a paused rollout proceeds.Fixes #1183 — a request open since 2022 to surface pause time remaining. Neither the dashboard nor the CLI surfaced it before this PR.
Dashboard
The current pause step's card fills left-to-right as the pause elapses. Indefinite (manual) pauses are unchanged.
CLI
kubectl argo rollouts get rolloutgains aPause:line in the canary summary showing the time left on the current timed pause (e.g.Pause: 15s remaining). Indefinite pauses and non-paused steps are unaffected.How it works
status.pauseConditions[reason=CanaryPauseStep].startTime. This PR surfaces it onRolloutInfoas a newpauseStartTimefield (populated in the info builder; proto/swagger/TS artifacts regenerated).Design choices
pause: {duration: 40s}) → dashboard card fills (no countdown text, keeping the panel minimal); CLI showsPause: Ns remaining.pause: {}) → unchanged in both.Demo
UI

CLI

Checklist:
infobuilder + CLIgetunit tests, plus UI jest helper tests.info+cmd/get, UI jest).