Skip to content

Commit c9bb31c

Browse files
authored
feat: update cli to retrieve applications for product release steps (#758)
## What Adding promotion commits to product release steps if the version of codefresh is compatible. I've added a fall back in case the cli is connected to an old version of codefresh (on prem). ## Why A customer wanted to know the commit created by promotions for each step of a product release for each application. See Jira ticket for details. ## Notes Jira: https://codefresh-io.atlassian.net/browse/CR-25720
1 parent 6b74b8d commit c9bb31c

File tree

2 files changed

+60
-22
lines changed

2 files changed

+60
-22
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
VERSION=v0.1.65
1+
VERSION=v0.1.66
22

33
OUT_DIR=dist
44
YEAR?=$(shell date +"%Y")

cmd/commands/product-release.go

Lines changed: 59 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222

2323
"github.com/codefresh-io/cli-v2/pkg/util"
2424

25+
"github.com/codefresh-io/cli-v2/pkg/log"
2526
"github.com/codefresh-io/go-sdk/pkg/client"
2627
platmodel "github.com/codefresh-io/go-sdk/pkg/model/promotion-orchestrator"
2728
"github.com/spf13/cobra"
@@ -37,6 +38,55 @@ type (
3738
}
3839
)
3940

41+
const latest_query = `
42+
query getProductReleasesList(
43+
$productName: String!
44+
$filters: ProductReleaseFiltersArgs!
45+
$pagination: SlicePaginationArgs
46+
) {
47+
productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
48+
edges {
49+
node {
50+
releaseId
51+
steps {
52+
environmentName
53+
status
54+
applications {
55+
applicationId {
56+
runtime
57+
namespace
58+
name
59+
}
60+
commitSha
61+
}
62+
}
63+
status
64+
}
65+
}
66+
}
67+
}
68+
`
69+
70+
const pre_v1_3120_1_query = `
71+
query getProductReleasesList(
72+
$productName: String!
73+
$filters: ProductReleaseFiltersArgs!
74+
$pagination: SlicePaginationArgs
75+
) {
76+
productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
77+
edges {
78+
node {
79+
releaseId
80+
steps {
81+
environmentName
82+
status
83+
}
84+
status
85+
}
86+
}
87+
}
88+
}`
89+
4090
func NewProductReleaseCommand() *cobra.Command {
4191
cmd := &cobra.Command{
4292
Use: "product-release",
@@ -98,25 +148,7 @@ func newProductReleaseListCommand() *cobra.Command {
98148

99149
// client here is for mock testings usage
100150
func runProductReleaseList(ctx context.Context, filterArgs platmodel.ProductReleaseFiltersArgs, productName string, pageLimit int) error {
101-
query := `
102-
query getProductReleasesList(
103-
$productName: String!
104-
$filters: ProductReleaseFiltersArgs!
105-
$pagination: SlicePaginationArgs
106-
) {
107-
productReleases(productName: $productName, filters: $filters, pagination: $pagination) {
108-
edges {
109-
node {
110-
releaseId
111-
steps {
112-
environmentName
113-
status
114-
}
115-
status
116-
}
117-
}
118-
}
119-
}`
151+
120152
// add pagination - default for now is last 20
121153
variables := map[string]any{
122154
"filters": filterArgs,
@@ -126,9 +158,15 @@ query getProductReleasesList(
126158
},
127159
}
128160

129-
productReleasesPage, err := client.GraphqlAPI[productReleaseSlice](ctx, cfConfig.NewClient().InternalClient(), query, variables)
161+
productReleasesPage, err := client.GraphqlAPI[productReleaseSlice](ctx, cfConfig.NewClient().InternalClient(), latest_query, variables)
130162
if err != nil {
131-
return fmt.Errorf("failed to get product releases: %w", err)
163+
if strings.Contains(err.Error(), "Cannot query field \\\"applications\\\" on type \\\"ProductReleaseStep\\\".") {
164+
log.G().Warn("codefresh version older than v1.3120.1 detected. Using pre v1.3120.1 query which excludes applications.")
165+
productReleasesPage, err = client.GraphqlAPI[productReleaseSlice](ctx, cfConfig.NewClient().InternalClient(), pre_v1_3120_1_query, variables)
166+
}
167+
if err != nil {
168+
return fmt.Errorf("failed to get product releases: %s", err.Error())
169+
}
132170
}
133171

134172
if len(productReleasesPage.Edges) == 0 {

0 commit comments

Comments
 (0)