Skip to content

feat: Atmos List Deployments, Pro Deployments Upload #1254

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 124 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
124 commits
Select commit Hold shift + click to select a range
bba4888
adding drift detection support
milldr May 15, 2025
a9deaa6
adding drift detection support
milldr May 15, 2025
30dac22
adding drift detection support
milldr May 15, 2025
d28dd5d
adding drift detection support
milldr May 15, 2025
702d236
adding drift detection support
milldr May 15, 2025
20785f9
adding drift detection support
milldr May 15, 2025
150c1ce
adding drift detection support
milldr May 15, 2025
ebea868
adding drift detection support
milldr May 15, 2025
1f1a22f
cleaning up tests
milldr May 15, 2025
eeba626
cleaning up tests
milldr May 15, 2025
b3d8a81
cleaning up tests
milldr May 15, 2025
e30b7eb
Merge branch 'main' into feat/atmos-list-upload
milldr May 15, 2025
48de779
[autofix.ci] apply automated fixes
autofix-ci[bot] May 15, 2025
0d66402
use cb logger
milldr May 16, 2025
e5553a3
more tests
milldr May 16, 2025
6002909
more tests
milldr May 16, 2025
f6b335b
Merge branch 'feat/atmos-list-upload' of github.com:cloudposse/atmos …
milldr May 16, 2025
c90dde6
more tests
milldr May 16, 2025
3a284b4
more tests
milldr May 16, 2025
d2408a9
clean up tests
milldr May 16, 2025
204f56b
Merge branch 'main' into feat/atmos-list-upload
milldr May 16, 2025
17d9d28
Merge branch 'main' into feat/atmos-list-upload
milldr May 22, 2025
7d51fdd
updated table design
milldr May 22, 2025
02157f5
dont process templates or functions with list deployments
milldr May 22, 2025
e5a9d33
Merge branch 'main' into feat/atmos-list-upload
milldr May 22, 2025
ab22c6a
tests for windows
milldr May 22, 2025
1339290
snapshots
milldr May 22, 2025
ef81dbf
reset unintended changes
milldr May 22, 2025
0071ac6
reset unintended changes
milldr May 22, 2025
9e2436d
use internal package not pkg
milldr May 22, 2025
35fb2ae
more tests
milldr May 22, 2025
71e3b08
fix tests
milldr May 22, 2025
5f01771
Merge branch 'main' into feat/atmos-list-upload
milldr May 27, 2025
ec24435
more tests
milldr May 27, 2025
8dd4865
[autofix.ci] apply automated fixes
autofix-ci[bot] May 27, 2025
bbf9c5e
building atmos plan upload
milldr May 28, 2025
e49969f
Creating plan upload
milldr May 29, 2025
074a495
fixed logic for plan args
milldr May 29, 2025
2817a53
adding tests
milldr May 29, 2025
04fd74d
more tests
milldr May 29, 2025
dc3ca64
test coverage
milldr May 30, 2025
bea9e90
Merge branch 'main' into feat/atmos-plan-upload
milldr May 30, 2025
6271662
[autofix.ci] apply automated fixes
autofix-ci[bot] May 30, 2025
f34ee99
fixed git lib
milldr May 30, 2025
a1cfa5d
fixing logging
milldr May 30, 2025
e6ba64f
Merge branch 'feat/atmos-plan-upload' of github.com:cloudposse/atmos …
milldr May 30, 2025
fc330a3
cleaning up usage
milldr May 30, 2025
be60360
PR review
milldr May 30, 2025
45edf64
PR review
milldr May 30, 2025
b36b1ff
use pointers
milldr May 30, 2025
80cc607
Merge branch 'main' into feat/atmos-list-upload
milldr May 30, 2025
9a8cecb
tlc and merge
milldr May 30, 2025
02b76eb
updated testing
milldr May 30, 2025
501aea8
fix sort
milldr May 30, 2025
12afe45
clean up logger
milldr May 30, 2025
05c5e3c
Adding tests
milldr May 30, 2025
ffcd2c3
feedback
milldr May 30, 2025
dfa38c5
fixed TestProcessStackComponents test
milldr May 30, 2025
2fa20f3
sort logic and new snapshots
milldr May 30, 2025
a40ab9f
more tests
milldr May 31, 2025
febcfae
more tests
milldr May 31, 2025
4f54434
remove unnecessary logger
milldr Jun 2, 2025
542addb
Merge branch 'main' into feat/atmos-list-upload
milldr Jun 3, 2025
ae82ff4
Merge branch 'main' into feat/atmos-list-upload
milldr Jun 4, 2025
c6d0251
Merge branch 'main' into feat/atmos-list-upload
milldr Jun 6, 2025
21868e0
merging main
milldr Jun 9, 2025
93a9730
merging main
milldr Jun 9, 2025
6254a4d
Merge branch 'feat/atmos-list-upload' of github.com:cloudposse/atmos …
milldr Jun 9, 2025
c0bf064
clean up comments
milldr Jun 9, 2025
ba438a4
merged
milldr Jun 10, 2025
a6984ad
merged
milldr Jun 10, 2025
444a29a
merged
milldr Jun 10, 2025
81058ae
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 10, 2025
fe78f86
clean up review
milldr Jun 10, 2025
244bf7d
Merge branch 'feat/atmos-list-upload' of github.com:cloudposse/atmos …
milldr Jun 10, 2025
845d50f
merged
milldr Jun 10, 2025
aa5590f
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 10, 2025
99b55d1
clean up review
milldr Jun 10, 2025
200c28c
Merge branch 'feat/atmos-list-upload' of github.com:cloudposse/atmos …
milldr Jun 10, 2025
9e22f31
Fixed build
milldr Jun 10, 2025
6fde5ee
fixing tests
milldr Jun 10, 2025
0f44522
more tests
milldr Jun 10, 2025
ba5c133
fixed tests
milldr Jun 10, 2025
4327651
fixed tests
milldr Jun 10, 2025
32fb0e2
fixed tests
milldr Jun 10, 2025
f6903f0
Update pkg/list/list_deployments.go
milldr Jun 10, 2025
e19688a
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 10, 2025
0baacfe
fixed tests
milldr Jun 10, 2025
d9f23fd
prompt suggestions
milldr Jun 10, 2025
a6ab979
prompt suggestions
milldr Jun 10, 2025
0275792
prompt suggestions
milldr Jun 10, 2025
a15dcfa
Merge branch 'main' into feat/atmos-list-upload
milldr Jun 12, 2025
e3dadc9
rename stacks to deployments
mcalhoun Jun 13, 2025
66e714a
remove logger
mcalhoun Jun 13, 2025
b8b34ce
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 13, 2025
ef18399
Merge branch 'main' into feat/atmos-list-upload
mcalhoun Jun 13, 2025
f23d04a
Merge branch 'main' into feat/atmos-list-upload
goruha Jun 13, 2025
6768203
update to deployments
mcalhoun Jun 18, 2025
25cc00a
force rc bulid
mcalhoun Jun 18, 2025
00612aa
rename drift status to deployment status
mcalhoun Jun 18, 2025
6676670
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 18, 2025
59c8a1a
update lint errors
mcalhoun Jun 18, 2025
dd9ac22
fix test errors
mcalhoun Jun 18, 2025
7ee4504
Merge branch 'main' into feat/atmos-list-upload
goruha Jun 24, 2025
100b415
Update feature-release.yml
goruha Jun 24, 2025
c238765
Update feature-release.yml
goruha Jun 24, 2025
62880ea
Update feature-release.yml
goruha Jun 24, 2025
8cfd3cf
Update feature-release.yml
goruha Jun 24, 2025
61326e0
Update feature-release.yml
goruha Jun 24, 2025
e7127bb
Merge branch 'main' into feat/atmos-list-upload
goruha Jun 25, 2025
1bf0718
Support draft release
goruha Jun 25, 2025
58b7710
Update feature-release.yml
goruha Jun 25, 2025
38913b8
Merge branch 'main' into feat/atmos-list-upload
goruha Jun 25, 2025
1969b57
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 25, 2025
6466043
Update describe_affected.go
goruha Jun 25, 2025
0fedbf2
Update describe_affected.go
goruha Jun 25, 2025
84e3eb8
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 25, 2025
a918577
Update test.yml
goruha Jun 25, 2025
0dea003
Update test.yml
goruha Jun 25, 2025
f60c502
Update test.yml
goruha Jun 25, 2025
5e3538e
Update test.yml
goruha Jun 25, 2025
f5bd948
Update describe_affected.go
goruha Jun 25, 2025
6ec3e86
[autofix.ci] apply automated fixes
autofix-ci[bot] Jun 25, 2025
8f4e248
Update test.yml
goruha Jun 25, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 21 additions & 4 deletions .github/workflows/feature-release.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,27 @@
name: Feature release
on:
issue_comment:
types: [created]
pull_request:
types: [ opened, synchronize, reopened, labeled, unlabeled ]
paths-ignore:
- "README.md"

permissions:
attestations: write
contents: write
id-token: write
pull-requests: write
packages: write
issues: write

jobs:
release:
if: ${{ github.event_name == 'issue_comment' && contains(github.event.comment.body, '/release') }}
uses: cloudposse/.github/.github/workflows/shared-go-feature-release.yml@feature-release-shared-workflow
if: |
github.event_name == 'pull_request' && contains(github.event.pull_request.labels.*.name, 'release/feature')
uses: cloudposse/.github/.github/workflows/shared-go-auto-release.yml@main
Copy link
Contributor

Choose a reason for hiding this comment

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

⚠️ Potential issue

Workflow not pinned – supply-chain risk

Referencing a reusable workflow by branch (@main) means a rogue commit could silently change your release logic. Pin to a commit SHA.

-    uses: cloudposse/.github/.github/workflows/shared-go-auto-release.yml@main
+    # Pin to a known-good commit to avoid unexpected changes
+    uses: cloudposse/.github/.github/workflows/shared-go-auto-release.yml@<commit-sha>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
uses: cloudposse/.github/.github/workflows/shared-go-auto-release.yml@main
# Pin to a known-good commit to avoid unexpected changes
uses: cloudposse/.github/.github/workflows/shared-go-auto-release.yml@<commit-sha>
🤖 Prompt for AI Agents
In .github/workflows/feature-release.yml at line 12, the reusable workflow is
referenced by branch name '@main', which poses a supply-chain risk. Replace the
branch reference with a specific commit SHA to pin the workflow version,
ensuring the release logic cannot be altered unexpectedly by changes to the
branch.

with:
publish: true
prerelease: true
format: binary
environment: 'feature-releases'
draft: ${{ github.event.pull_request.draft }}
secrets: inherit
37 changes: 28 additions & 9 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,35 +40,42 @@ jobs:
runs-on: ${{ matrix.os }}
steps:
- name: Build
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
run: echo "Building on ${{ matrix.os }}"

- name: Add GNU tar to PATH (significantly faster than windows tar)
if: matrix.target == 'windows'
if: matrix.target == 'windows' && ! github.event.pull_request.draft
run: echo "C:\Program Files\Git\usr\bin" >> $Env:GITHUB_PATH

- name: Check out code into the Go module directory
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
uses: actions/checkout@v4

- name: Set up Go
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
uses: actions/setup-go@v5
with:
go-version-file: "go.mod"
id: go

- name: Get dependencies
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
run: |
make deps

- name: Build
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
run: |
make build-${{ matrix.target }}

- name: Version
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
run: |
make version-${{ matrix.target }}

- name: Upload build artifacts
uses: actions/upload-artifact@v4
if: ${{ ! ( matrix.target == 'windows' && github.event.pull_request.draft ) }}
with:
name: build-artifacts-${{ matrix.target }}
path: |
Expand All @@ -89,14 +96,16 @@ jobs:
runs-on: ${{ matrix.flavor.os }}
steps:
- name: Check out code into the Go module directory
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
uses: actions/checkout@v4

- name: Add GNU tar to PATH (significantly faster than windows tar)
if: matrix.flavor.target == 'windows'
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
run: echo "C:\Program Files\Git\usr\bin" >> $Env:GITHUB_PATH

- name: Download build artifacts for ${{ matrix.flavor.target }}
uses: actions/download-artifact@v4
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
with:
name: build-artifacts-${{ matrix.flavor.target }}
path: ${{ github.workspace }}
Expand All @@ -108,7 +117,7 @@ jobs:
chmod +x "${{ github.workspace }}/atmos"

- name: Add build artifacts directory to PATH for windows
if: matrix.flavor.target == 'windows'
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
shell: pwsh
run: |
$atmosPath = Join-Path ${{ github.workspace }} "atmos.exe"
Expand All @@ -119,26 +128,29 @@ jobs:

- name: Install Terraform
uses: hashicorp/setup-terraform@v3
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
with:
terraform_version: ${{ env.TERRAFORM_VERSION }}
terraform_wrapper: false

- name: Install OpenTofu
uses: opentofu/setup-opentofu@v1
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
with:
tofu_version: ${{ env.OPEN_TOFU_VERSION }}
tofu_wrapper: false

# https://github.com/helmfile/helmfile-action
- name: Install Helmfile
uses: helmfile/[email protected]
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
with:
helmfile-version: ${{ env.HELMFILE_VERSION }}
helmfile-args: version
helmfile-auto-init: "false"

- name: Check atmos.exe integrity
if: matrix.flavor.target == 'windows'
if: matrix.flavor.flavor.target == 'windows' && ! github.event.pull_request.draft
shell: pwsh
run: |
Write-Output "PATH=$Env:PATH"
Expand All @@ -149,11 +161,13 @@ jobs:

- name: Set up Go
uses: actions/setup-go@v5
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
with:
go-version-file: "go.mod"
id: go

- name: Get dependencies
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
run: |
make deps

Expand All @@ -172,6 +186,7 @@ jobs:

- name: Acceptance tests
timeout-minutes: 30
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: make testacc-cover
Expand Down Expand Up @@ -371,13 +386,15 @@ jobs:
timeout-minutes: 20
steps:
- name: Check out code into the Go module directory
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
uses: actions/checkout@v4

- name: Add GNU tar to PATH (significantly faster than windows tar)
if: matrix.flavor.target == 'windows'
- name: Add GNU tar to flavor.target (significantly faster than windows tar)
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
run: echo "C:\Program Files\Git\usr\bin" >> $Env:GITHUB_PATH

- name: Download build artifacts for ${{ matrix.flavor.target }}
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
uses: actions/download-artifact@v4
with:
name: build-artifacts-${{ matrix.flavor.target }}
Expand All @@ -390,17 +407,19 @@ jobs:
chmod +x "${{ github.workspace }}/atmos"

- name: Add build artifacts directory to PATH for windows
if: matrix.flavor.target == 'windows'
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
run: |
echo "${{ github.workspace }}" >> $Env:GITHUB_PATH

- name: Install Terraform
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
uses: hashicorp/setup-terraform@v3
with:
terraform_version: ${{ env.TERRAFORM_VERSION }}
terraform_wrapper: false

- name: Install OpenTofu
if: ${{ ! ( matrix.flavor.target == 'windows' && github.event.pull_request.draft ) }}
uses: opentofu/setup-opentofu@v1
with:
tofu_version: ${{ env.OPEN_TOFU_VERSION }}
Expand All @@ -415,7 +434,7 @@ jobs:
atmos test

- name: Check atmos.exe integrity
if: matrix.flavor.target == 'windows'
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
shell: pwsh
run: |
Write-Output "PATH=$Env:PATH"
Expand All @@ -426,7 +445,7 @@ jobs:

- name: Run tests in ${{ matrix.demo-folder }} for ${{ matrix.flavor.target }}
working-directory: ${{ matrix.demo-folder }}
if: matrix.flavor.target == 'windows'
if: matrix.flavor.target == 'windows' && ! github.event.pull_request.draft
shell: pwsh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Expand Down
54 changes: 54 additions & 0 deletions cmd/list_deployments.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
package cmd

import (
"github.com/spf13/cobra"

e "github.com/cloudposse/atmos/internal/exec"
"github.com/cloudposse/atmos/pkg/list"
fl "github.com/cloudposse/atmos/pkg/list/flags"
"github.com/cloudposse/atmos/pkg/schema"
u "github.com/cloudposse/atmos/pkg/utils"
)

// listDeploymentsCmd lists atmos deployments.
var listDeploymentsCmd = &cobra.Command{
Use: "deployments",
Short: "List all Atmos deployments",
Long: "This command lists all Atmos deployments or is used to upload deployments to the pro API.",
FParseErrWhitelist: struct{ UnknownFlags bool }{UnknownFlags: false},
Args: cobra.NoArgs,
Run: func(cmd *cobra.Command, args []string) {
// Check Atmos configuration
checkAtmosConfig()
err := ExecuteListDeploymentsCmd(cmd, args)
if err != nil {
u.PrintErrorMarkdownAndExit("Error listing deployments", err, "")
return
}

Check warning on line 27 in cmd/list_deployments.go

View check run for this annotation

Codecov / codecov/patch

cmd/list_deployments.go#L20-L27

Added lines #L20 - L27 were not covered by tests
},
}

func init() {
// Add common list flags
fl.AddCommonListFlags(listDeploymentsCmd)

// Add deployment-specific flags
listDeploymentsCmd.Flags().Bool("upload", false, "Upload deployments to pro API")

// Add the command to the list command
listCmd.AddCommand(listDeploymentsCmd)
}

func ExecuteListDeploymentsCmd(cmd *cobra.Command, args []string) error {
info := &schema.ConfigAndStacksInfo{}
info.Command = "list"
info.SubCommand = "deployments"

// Process and validate command line arguments
_, err := e.ProcessCommandLineArgs("list", cmd, args, nil)
if err != nil {
return err
}

Check warning on line 51 in cmd/list_deployments.go

View check run for this annotation

Codecov / codecov/patch

cmd/list_deployments.go#L42-L51

Added lines #L42 - L51 were not covered by tests

return list.ExecuteListDeploymentsCmd(info, cmd, args)

Check warning on line 53 in cmd/list_deployments.go

View check run for this annotation

Codecov / codecov/patch

cmd/list_deployments.go#L53

Added line #L53 was not covered by tests
}
5 changes: 3 additions & 2 deletions cmd/terraform_commands.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ import (
"log"
"os"

"github.com/spf13/cobra"

cfg "github.com/cloudposse/atmos/pkg/config"
h "github.com/cloudposse/atmos/pkg/hooks"
"github.com/cloudposse/atmos/pkg/version"
"github.com/spf13/cobra"
)

// getTerraformCommands returns an array of statically defined Terraform commands with flags
Expand Down Expand Up @@ -320,6 +320,7 @@ func attachTerraformCommands(parentCmd *cobra.Command) {

var commandMaps = map[string]func(cmd *cobra.Command){
"plan": func(cmd *cobra.Command) {
cmd.PersistentFlags().Bool(cfg.UploadDeploymentStatusFlag, false, "If set atmos will upload the plan result to the pro API")
cmd.PersistentFlags().Bool("affected", false, "Plan the affected components in dependency order")
cmd.PersistentFlags().Bool("all", false, "Plan all components in all stacks")
},
Expand Down
21 changes: 8 additions & 13 deletions internal/exec/describe_affected.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,17 @@
"fmt"

log "github.com/charmbracelet/log"
"github.com/go-git/go-git/v5/plumbing"
giturl "github.com/kubescape/go-git-url"
"github.com/spf13/cobra"
"github.com/spf13/pflag"

"github.com/cloudposse/atmos/internal/tui/templates/term"
cfg "github.com/cloudposse/atmos/pkg/config"
l "github.com/cloudposse/atmos/pkg/logger"
"github.com/cloudposse/atmos/pkg/pager"
"github.com/cloudposse/atmos/pkg/pro"
"github.com/cloudposse/atmos/pkg/pro/dtos"
"github.com/cloudposse/atmos/pkg/schema"
u "github.com/cloudposse/atmos/pkg/utils"
"github.com/go-git/go-git/v5/plumbing"
giturl "github.com/kubescape/go-git-url"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)

var ErrRepoPathConflict = errors.New("if the '--repo-path' flag is specified, the '--ref', '--sha', '--ssh-key' and '--ssh-key-password' flags can't be used")
Expand Down Expand Up @@ -296,7 +294,9 @@
if err != nil {
return err
}
logger, err := l.NewLoggerFromCliConfig(*d.atmosConfig)

log.Debug("Creating API client")
apiClient, err := pro.NewAtmosProAPIClientFromEnv(d.atmosConfig)

Check warning on line 299 in internal/exec/describe_affected.go

View check run for this annotation

Codecov / codecov/patch

internal/exec/describe_affected.go#L298-L299

Added lines #L298 - L299 were not covered by tests
if err != nil {
return err
}
Expand All @@ -310,13 +310,8 @@
RepoHost: gitURL.GetHostName(),
Stacks: affected,
}
log.Debug("Preparing upload affected stacks request", "req", req)

log.Debug("Creating API client")
apiClient, err := pro.NewAtmosProAPIClientFromEnv(logger, d.atmosConfig)
if err != nil {
return err
}
log.Debug("Preparing upload affected stacks request", "req", req)

Check warning on line 314 in internal/exec/describe_affected.go

View check run for this annotation

Codecov / codecov/patch

internal/exec/describe_affected.go#L314

Added line #L314 was not covered by tests

return apiClient.UploadAffectedStacks(&req)
}
Expand Down
Loading
Loading