From 990b21484a5ad3b4b41b0b85064bc1d8c19b5c43 Mon Sep 17 00:00:00 2001 From: universe-ops Date: Tue, 30 Jun 2026 20:44:05 +0300 Subject: [PATCH] feat(actions): add skip-refresh input to provision-parent-stack MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The provision-parent-stack action always ran a Pulumi refresh on real (non-dry-run) provisions: executeProvision hard-coded SkipRefresh to previewMode, and neither the action nor ProvisionParentStack read a SKIP_REFRESH signal. The sibling deploy-client-stack action already supported skip-refresh; this brings provision to parity. - action.yml: add `skip-refresh` input (default false) mapped to SKIP_REFRESH env. - ProvisionParentStack: read SKIP_REFRESH into OperationConfig.SkipRefresh. - executeProvision: honor config.SkipRefresh (SkipRefresh = config.SkipRefresh || previewMode), mirroring executeDeploy. Refresh stays on by default; opting out is explicit. Note skipping refresh on a parent/infra stack means Pulumi won't reconcile state against the cloud first, so out-of-band drift can cause stale-state surprises — use deliberately. Co-Authored-By: Claude Opus 4.8 Signed-off-by: Ilya Sadykov --- .github/actions/provision-parent-stack/action.yml | 5 +++++ pkg/githubactions/actions/operation_executor.go | 4 ++-- pkg/githubactions/actions/operations.go | 7 ++++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/.github/actions/provision-parent-stack/action.yml b/.github/actions/provision-parent-stack/action.yml index 7e3e5ec3..428ed38d 100644 --- a/.github/actions/provision-parent-stack/action.yml +++ b/.github/actions/provision-parent-stack/action.yml @@ -51,6 +51,10 @@ inputs: description: 'Commit message' required: false default: '' + skip-refresh: + description: 'Skip Pulumi refresh operation before provisioning' + required: false + default: 'false' outputs: stack-name: @@ -78,3 +82,4 @@ runs: GITHUB_REF: ${{ inputs.ref }} COMMIT_AUTHOR: ${{ inputs.commit-author }} COMMIT_MESSAGE: ${{ inputs.commit-message }} + SKIP_REFRESH: ${{ inputs.skip-refresh }} diff --git a/pkg/githubactions/actions/operation_executor.go b/pkg/githubactions/actions/operation_executor.go index 1b1b4658..3d027a5b 100644 --- a/pkg/githubactions/actions/operation_executor.go +++ b/pkg/githubactions/actions/operation_executor.go @@ -319,8 +319,8 @@ func (e *Executor) executeProvision(ctx context.Context, config OperationConfig, StacksDir: ".sc/stacks", Profile: profile, Stacks: []string{config.StackName}, - SkipRefresh: previewMode, - DetailedDiff: true, // Enable detailed diff for better visibility in GitHub Actions + SkipRefresh: config.SkipRefresh || previewMode, // Use configured skip-refresh or preview mode + DetailedDiff: true, // Enable detailed diff for better visibility in GitHub Actions } if previewMode { diff --git a/pkg/githubactions/actions/operations.go b/pkg/githubactions/actions/operations.go index 6a1f64e2..5cc1471e 100644 --- a/pkg/githubactions/actions/operations.go +++ b/pkg/githubactions/actions/operations.go @@ -78,9 +78,10 @@ func (e *Executor) ProvisionParentStack(ctx context.Context) error { // Wrap the provision with signal handling and panic recovery return e.signalHandler.WithSignalHandling(ctx, opTypeProvision, provisionParams, func(opCtx context.Context) error { return e.executeOperation(opCtx, OperationConfig{ - Type: OperationProvision, - Scope: ScopeParent, - StackName: stackName, + Type: OperationProvision, + Scope: ScopeParent, + StackName: stackName, + SkipRefresh: os.Getenv("SKIP_REFRESH") == "true", // Skip Pulumi refresh if requested }) }) }