Skip to content

feat: report Helm release operation progress - #2927

Open
Mikhail Shirkov (shirkevich) wants to merge 2 commits into
codex/helm-lifecycle-k3sfrom
codex/helm-operation-progress
Open

feat: report Helm release operation progress#2927
Mikhail Shirkov (shirkevich) wants to merge 2 commits into
codex/helm-lifecycle-k3sfrom
codex/helm-operation-progress

Conversation

@shirkevich

@shirkevich Mikhail Shirkov (shirkevich) commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

What changed

  • report a preparation line before native Helm cluster work begins
  • report the selected install, upgrade, or delete lifecycle policy before invoking Helm
  • emit masked elapsed-time heartbeats every 30 seconds while Helm is still running
  • report terminal success or failure with component, stack, release, namespace, and duration
  • document the output contract for single and bulk apply/delete commands

Why

Native Helm uses the embedded Helm SDK rather than spawning the Helm CLI. The SDK action path does not produce Helm CLI progress output, so a healthy long-running install or upgrade can otherwise remain completely silent until it returns. That also makes a blocked release operation difficult to distinguish from a hung Atmos process.

These events use Atmos UI output instead of diagnostic logging, so they remain visible when logging is disabled and pass through the global masking layer. Hook container logs remain opt-in rather than being streamed automatically.

User impact

A release operation now gives immediate feedback, exposes the effective lifecycle policy, remains visibly alive during long waits, and identifies each component in bulk output. The output is stable line-oriented text suitable for both terminals and CI logs.

Stack

This PR is stacked on #2849 and should be reviewed after it.

Validation

  • go test ./pkg/component/helm -count=1 (181 tests)
  • go run . lint --changed
  • git diff --check

Summary by CodeRabbit

  • New Features

    • Added live progress updates for Helm apply and delete operations.
    • Progress messages include lifecycle settings, elapsed-time updates, and final success or failure status.
    • Dry-run operations provide context-aware progress reporting.
    • Bulk operations display component and stack details.
  • Documentation

    • Documented Helm progress output, wait policies, timeouts, and limitations around chart hook logs.

@shirkevich
Mikhail Shirkov (shirkevich) requested a review from a team as a code owner August 12, 2026 07:18
@atmos-pro

atmos-pro Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Tip

Atmos Pro  

No affected stacks workflow was detected for this pull request.
If this is expected, no action is needed.
Learn More. Ask AI.

@github-actions github-actions Bot added the size/m Medium size PR label Aug 12, 2026
@mergify mergify Bot added the stacked Stacked label Aug 12, 2026
@github-actions

Copy link
Copy Markdown

Dependency Review

✅ No vulnerabilities or license issues found.

Scanned Files

None

@shirkevich

Copy link
Copy Markdown
Collaborator Author

CodeRabbit (@coderabbitai) review

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor
✅ Action performed

Review finished.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

📝 Walkthrough

Walkthrough

Helm apply and delete operations now report lifecycle progress through the Atmos UI. The implementation emits preparation, resolution, heartbeat, and terminal messages, supports dry runs, and includes tests and CLI documentation.

Changes

Helm progress reporting

Layer / File(s) Summary
Progress lifecycle and message handling
pkg/component/helm/progress.go, pkg/component/helm/progress_test.go
The new progress reporter tracks Helm operation state, emits lifecycle and heartbeat messages, formats elapsed time and release details, handles dry runs, and completes safely. Tests cover success, failure, heartbeat, and nil-input cases.
Apply and delete progress integration
pkg/component/helm/chart.go, pkg/component/helm/client.go, pkg/component/helm/executor.go, website/docs/cli/commands/helm/helm-apply.mdx, website/docs/cli/commands/helm/helm-delete.mdx
Apply and delete execution attaches progress tracking, reports resolved lifecycle settings, finishes with the operation error, and clears the reporter. The Helm command documentation describes the emitted output.

Estimated code review effort: 3 (Moderate) | ~20 minutes

Sequence Diagram(s)

sequenceDiagram
  participant OperationExecutor
  participant HelmClient
  participant HelmOperationProgress
  participant AtmosUI
  OperationExecutor->>HelmOperationProgress: Start operation tracking
  OperationExecutor->>HelmClient: Apply or delete release
  HelmClient->>HelmOperationProgress: Report resolved lifecycle
  HelmOperationProgress->>AtmosUI: Emit lifecycle and heartbeat messages
  OperationExecutor->>HelmOperationProgress: Finish with operation error
  HelmOperationProgress->>AtmosUI: Emit success or failure status
Loading

Suggested labels: minor

Suggested reviewers: osterman

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely summarizes the main change: adding progress reporting for Helm release operations.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/helm-operation-progress

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@pkg/component/helm/executor.go`:
- Around line 236-243: Move the Helm progress lifecycle around
newHelmOperationProgress, Start, and Finish into the Kubernetes-specific branch
selected by deliverApply, so external targets do not emit native Helm progress
messages. Preserve summary merging and error propagation for all targets, and
add regression coverage for external-target delivery and target-selection
failure.

In `@pkg/component/helm/progress.go`:
- Around line 80-120: Rename helmOperationProgress methods Start, Resolved, and
Finish to private names, such as start, resolved, and finish, and update all
callers within package helm to use the renamed methods. Keep their existing
behavior unchanged and do not expose these lifecycle methods publicly.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8f23facb-13ec-4e8c-93a5-1eb5b144da52

📥 Commits

Reviewing files that changed from the base of the PR and between f2706be and 92803a0.

📒 Files selected for processing (7)
  • pkg/component/helm/chart.go
  • pkg/component/helm/client.go
  • pkg/component/helm/executor.go
  • pkg/component/helm/progress.go
  • pkg/component/helm/progress_test.go
  • website/docs/cli/commands/helm/helm-apply.mdx
  • website/docs/cli/commands/helm/helm-delete.mdx

Comment thread pkg/component/helm/executor.go Outdated
Comment thread pkg/component/helm/progress.go Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/m Medium size PR stacked Stacked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant