From 48fe19bfdbfdb518fb95e27a48dd700ee877afad Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Thu, 23 Oct 2025 22:10:50 +0300 Subject: [PATCH 01/14] updated argoproj/argo-cd/v2 --- Makefile | 2 +- go.mod | 8 +++++--- go.sum | 15 +++++++++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/Makefile b/Makefile index 44df39f9..765418e0 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION=v0.2.13 +VERSION=v0.2.14 OUT_DIR=dist YEAR?=$(shell date +"%Y") diff --git a/go.mod b/go.mod index 0ed5b034..68a7299e 100644 --- a/go.mod +++ b/go.mod @@ -1,10 +1,10 @@ module github.com/codefresh-io/cli-v2 -go 1.24.4 +go 1.24.6 require ( github.com/Masterminds/semver/v3 v3.3.1 - github.com/argoproj/argo-cd/v2 v2.13.9 + github.com/argoproj/argo-cd/v2 v2.14.20 github.com/codefresh-io/go-sdk v1.4.9 github.com/fatih/color v1.18.0 github.com/gobuffalo/packr v1.30.1 @@ -42,7 +42,7 @@ require ( github.com/Masterminds/squirrel v1.5.4 // indirect github.com/Microsoft/go-winio v0.6.2 // indirect github.com/ProtonMail/go-crypto v1.1.5 // indirect - github.com/argoproj/gitops-engine v0.7.1-0.20250328191959-6d3cf122b03f // indirect + github.com/argoproj/gitops-engine v0.7.1-0.20250521000818-c08b0a72c1f1 // indirect github.com/argoproj/pkg v0.13.7-0.20230901113346-235a5432ec98 // indirect github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect github.com/beorn7/perks v1.0.1 // indirect @@ -50,6 +50,8 @@ require ( github.com/bmatcuk/doublestar/v4 v4.7.1 // indirect github.com/bombsimon/logrusr/v2 v2.0.1 // indirect github.com/bradleyfalzon/ghinstallation/v2 v2.12.0 // indirect + github.com/casbin/casbin/v2 v2.102.0 // indirect + github.com/casbin/govaluate v1.2.0 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect github.com/chai2010/gettext-go v1.0.2 // indirect github.com/chzyer/readline v1.5.1 // indirect diff --git a/go.sum b/go.sum index a0617375..0062628f 100644 --- a/go.sum +++ b/go.sum @@ -39,10 +39,10 @@ github.com/alicebob/miniredis/v2 v2.33.0/go.mod h1:MhP4a3EU7aENRi9aO+tHfTBZicLqQ github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be h1:9AeTilPcZAjCFIImctFaOjnTIavg87rW78vTPkQqLI8= github.com/anmitsu/go-shlex v0.0.0-20200514113438-38f4b401e2be/go.mod h1:ySMOLuWl6zY27l47sB3qLNK6tF2fkHG55UZxx8oIVo4= github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/argoproj/argo-cd/v2 v2.13.9 h1:Mzs4FA1EeFhI/xoTFqSA80JP9/IwI+B4I1Kr0pTcLlA= -github.com/argoproj/argo-cd/v2 v2.13.9/go.mod h1:VnIEoaw53mwPEGKqixL3ee1qfP3tNUFj+9RHJVhmxws= -github.com/argoproj/gitops-engine v0.7.1-0.20250328191959-6d3cf122b03f h1:T18BJdtZF/HWdkyCqcNI6kQ3SbIomn6g+AZtZtvQUjE= -github.com/argoproj/gitops-engine v0.7.1-0.20250328191959-6d3cf122b03f/go.mod h1:WsnykM8idYRUnneeT31cM/Fq/ZsjkefCbjiD8ioCJkU= +github.com/argoproj/argo-cd/v2 v2.14.20 h1:qhV9BGNA2tyLWg2xd6ce0xlqC98OWBfXAzTc8kWug7U= +github.com/argoproj/argo-cd/v2 v2.14.20/go.mod h1:CF9GX0CjKiszpAnvYNCLV5tLSVqgfOgn/tcOt2VHTQo= +github.com/argoproj/gitops-engine v0.7.1-0.20250521000818-c08b0a72c1f1 h1:Ze4U6kV49vSzlUBhH10HkO52bYKAIXS4tHr/MlNDfdU= +github.com/argoproj/gitops-engine v0.7.1-0.20250521000818-c08b0a72c1f1/go.mod h1:WsnykM8idYRUnneeT31cM/Fq/ZsjkefCbjiD8ioCJkU= github.com/argoproj/pkg v0.13.7-0.20230901113346-235a5432ec98 h1:Y1wJVJePMad3LwH+OIX4cl9ND3251XUNxjgpxFRWmZs= github.com/argoproj/pkg v0.13.7-0.20230901113346-235a5432ec98/go.mod h1:2NWmOLTf7x7egzrvRhJrqfVI6QM9eq/ONYgHcuNju9s= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= @@ -57,6 +57,7 @@ github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bmatcuk/doublestar/v4 v4.6.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bmatcuk/doublestar/v4 v4.7.1 h1:fdDeAqgT47acgwd9bd9HxJRDmc9UAmPpc+2m0CXv75Q= github.com/bmatcuk/doublestar/v4 v4.7.1/go.mod h1:xBQ8jztBU6kakFMg+8WGxn0c6z1fTSPVIjEY1Wr7jzc= github.com/bombsimon/logrusr/v2 v2.0.1 h1:1VgxVNQMCvjirZIYaT9JYn6sAVGVEcNtRE0y4mvaOAM= @@ -69,6 +70,10 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/casbin/casbin/v2 v2.102.0 h1:weq9iSThUSL21SH3VrwoKa2DgRsaYMfjRNX/yOU3Foo= +github.com/casbin/casbin/v2 v2.102.0/go.mod h1:LO7YPez4dX3LgoTCqSQAleQDo0S0BeZBDxYnPUl95Ng= +github.com/casbin/govaluate v1.2.0 h1:wXCXFmqyY+1RwiKfYo3jMKyrtZmOL3kHwaqDyCPOYak= +github.com/casbin/govaluate v1.2.0/go.mod h1:G/UnbIjZk/0uMNaLwZZmFQrR72tYRZWQkO70si/iR7A= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -249,6 +254,7 @@ github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4er github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= @@ -918,6 +924,7 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= golang.org/x/tools v0.0.0-20190624180213-70d37148ca0c/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= From 7ab75fbf4a19d6fdc95012e72e46709f3bef6d9e Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Fri, 24 Oct 2025 09:57:45 +0300 Subject: [PATCH 02/14] empty From ca32409fc0d919be1053ad49ceeb2359b2c48b37 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Fri, 24 Oct 2025 11:48:32 +0300 Subject: [PATCH 03/14] empty From d1652b98b55a665faf2d56c0bdd9978703c47ac8 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Fri, 24 Oct 2025 15:33:42 +0300 Subject: [PATCH 04/14] empty From d717df3361666179eb3596e1135b2ca2e233cff4 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Sun, 26 Oct 2025 10:13:14 +0200 Subject: [PATCH 05/14] emp From 7182c8e5cd0e6161bcc4ab889102e9cb9716b27a Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 11:18:29 +0200 Subject: [PATCH 06/14] updated golang to 1.25 --- Dockerfile | 2 +- go.mod | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index a14e2c48..c718e86d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN go mod verify ############################### CLI ############################### ### Compile -FROM golang:1.24.6-alpine3.22 AS codefresh-build +FROM golang:1.25.3-alpine3.22 AS codefresh-build WORKDIR /go/src/github.com/codefresh-io/cli-v2 diff --git a/go.mod b/go.mod index 68a7299e..c21cd6a4 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/codefresh-io/cli-v2 -go 1.24.6 +go 1.25.3 require ( github.com/Masterminds/semver/v3 v3.3.1 From bd6e1358787b208ca76fe3a4ff90f7f254bb63b6 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 12:01:02 +0200 Subject: [PATCH 07/14] empty From b4cdd19a167f784f503ac49c893e4f7bef0cb624 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 12:48:53 +0200 Subject: [PATCH 08/14] upd lint --- .golangci.yaml | 12 ++++++------ cmd/commands/helm.go | 6 +++--- cmd/commands/helm_test.go | 2 +- cmd/commands/product-release_test.go | 2 +- cmd/commands/runtime.go | 4 ++-- hack/license.go | 2 +- internal/git/provider_bitbucket-server.go | 4 ++-- internal/git/provider_bitbucket.go | 2 +- internal/git/provider_github.go | 2 +- internal/git/provider_gitlab.go | 4 ++-- internal/util/cli/cli.go | 6 +++--- internal/util/kube/kube.go | 2 +- internal/util/kust/util.go | 2 +- 13 files changed, 25 insertions(+), 25 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 4e4e9a24..1f972ebb 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,11 +1,9 @@ -# This file contains all available configuration options -# with their default values. +version: "2" # options for analysis running run: - # https://github.com/golangci/golangci-lint/issues/2649 - # enable go 1.17 linting, will not allow generics - go: "1.17" + # Updated to match go.mod version + go: "1.25" # default concurrency is a available CPU number concurrency: 4 @@ -17,12 +15,14 @@ run: issues-exit-code: 1 linters: + default: none enable: - gocyclo - errcheck - godox + # all available settings of specific linters -linters-settings: +linters.settings: errcheck: # report about not checking of errors in type assertions: `a := b.(MyStruct)`; # default is false: such cases aren't reported by default. diff --git a/cmd/commands/helm.go b/cmd/commands/helm.go index dbf33d94..e3c12d2a 100644 --- a/cmd/commands/helm.go +++ b/cmd/commands/helm.go @@ -265,7 +265,7 @@ func getPlatformClient(ctx context.Context, opts *HelmValidateValuesOptions, cod } if caCert != "" { - defer os.Remove(caCert) + defer func() { _ = os.Remove(caCert) }() } return cfConfig.NewAdHocClient(ctx, url, cfToken, caCert) @@ -420,7 +420,7 @@ func checkIngressDef(ctx context.Context, opts *HelmValidateValuesOptions, ingre return err } - res.Body.Close() + _ = res.Body.Close() return nil } @@ -462,7 +462,7 @@ func checkGit(ctx context.Context, opts *HelmValidateValuesOptions, values chart } if caCert != "" { - defer os.Remove(caCert) + defer func() { _ = os.Remove(caCert) }() } provider, err := git.GetProvider(cliGitProvider, gitApiUrl, caCert) diff --git a/cmd/commands/helm_test.go b/cmd/commands/helm_test.go index 158fc3b5..65266523 100644 --- a/cmd/commands/helm_test.go +++ b/cmd/commands/helm_test.go @@ -662,7 +662,7 @@ argo-cd: } if got != "" { - defer os.Remove(got) + defer func() { _ = os.Remove(got) }() } if !strings.HasSuffix(got, tt.want) { diff --git a/cmd/commands/product-release_test.go b/cmd/commands/product-release_test.go index 3f7f7724..89464158 100644 --- a/cmd/commands/product-release_test.go +++ b/cmd/commands/product-release_test.go @@ -213,7 +213,7 @@ func getProductReleaseJsonStringMock() ([]map[string]any, error) { if err != nil { return nil, err } - defer file.Close() + defer func() { _ = file.Close() }() data, err := io.ReadAll(file) if err != nil { diff --git a/cmd/commands/runtime.go b/cmd/commands/runtime.go index 45075b17..b644f82b 100644 --- a/cmd/commands/runtime.go +++ b/cmd/commands/runtime.go @@ -454,7 +454,7 @@ func downloadRuntimeLogs() error { if err != nil { return err } - defer response.Body.Close() + defer func() { _ = response.Body.Close() }() fullFilename, err := getFullFilename(response) if err != nil { return err @@ -490,7 +490,7 @@ func downloadFile(response *http.Response, fullFilename string) error { if err != nil { return err } - defer fileDescriptor.Close() + defer func() { _ = fileDescriptor.Close() }() _, err = io.Copy(fileDescriptor, response.Body) return err } diff --git a/hack/license.go b/hack/license.go index f77bb59f..7777efaf 100644 --- a/hack/license.go +++ b/hack/license.go @@ -59,7 +59,7 @@ func main() { } f, err := os.OpenFile(path, os.O_RDWR, info.Mode()) die(err) - defer f.Close() + defer func() { _ = f.Close() }() data, err := io.ReadAll(f) die(err) diff --git a/internal/git/provider_bitbucket-server.go b/internal/git/provider_bitbucket-server.go index 41bcbfcb..fd57ed20 100644 --- a/internal/git/provider_bitbucket-server.go +++ b/internal/git/provider_bitbucket-server.go @@ -96,7 +96,7 @@ func (bbs *bitbucketServer) checkProjectAdminPermission(ctx context.Context, tok if err != nil { return fmt.Errorf("failed checking Project admin permission: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() if res.StatusCode != http.StatusBadRequest { return errors.New("git-token is invalid or missing required \"Project admin\" scope") @@ -112,7 +112,7 @@ func (bbs *bitbucketServer) getCurrentUsername(ctx context.Context, token string if err != nil { return "", fmt.Errorf("failed getting current user: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() username := res.Header.Get("X-AUSERNAME") if username == "" { diff --git a/internal/git/provider_bitbucket.go b/internal/git/provider_bitbucket.go index 58d96644..4d1512cc 100644 --- a/internal/git/provider_bitbucket.go +++ b/internal/git/provider_bitbucket.go @@ -123,7 +123,7 @@ func (bb *bitbucket) getCurrentUserScopes(ctx context.Context, token, username s if err != nil { return "", fmt.Errorf("failed getting current user: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() scopes := res.Header.Get("x-oauth-scopes") diff --git a/internal/git/provider_github.go b/internal/git/provider_github.go index b0780495..c61d5c4c 100644 --- a/internal/git/provider_github.go +++ b/internal/git/provider_github.go @@ -116,7 +116,7 @@ func (g *github) verifyToken(ctx context.Context, token string, requiredScopes [ if err != nil { return err } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() rawScopes := res.Header.Get("X-Oauth-Scopes") if rawScopes == "" { diff --git a/internal/git/provider_gitlab.go b/internal/git/provider_gitlab.go index 9faf48c7..6ac930b2 100644 --- a/internal/git/provider_gitlab.go +++ b/internal/git/provider_gitlab.go @@ -98,7 +98,7 @@ func (g *gitlab) checkApiScope(ctx context.Context, token string) error { if err != nil { return fmt.Errorf("failed checking api scope: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() if res.StatusCode != http.StatusBadRequest { return errors.New("git-token is invalid or missing required \"api\" scope") @@ -114,7 +114,7 @@ func (g *gitlab) checkTokenType(token string, ctx context.Context) (string, erro return "", fmt.Errorf("failed getting user: %w", err) } - defer userRes.Body.Close() + defer func() { _ = userRes.Body.Close() }() bodyBytes, err := io.ReadAll(userRes.Body) if err != nil { diff --git a/internal/util/cli/cli.go b/internal/util/cli/cli.go index b09650ab..cc5ce010 100644 --- a/internal/util/cli/cli.go +++ b/internal/util/cli/cli.go @@ -216,7 +216,7 @@ func getLatestCliVersion(ctx context.Context) (*semver.Version, error) { return nil, fmt.Errorf("failed to get latest version file: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() buf := &bytes.Buffer{} @@ -264,7 +264,7 @@ func downloadAndExtract(ctx context.Context, url, version string) (string, error if err != nil { return "", fmt.Errorf("failed send request: %w", err) } - defer res.Body.Close() + defer func() { _ = res.Body.Close() }() if res.StatusCode == http.StatusNotFound { return "", fmt.Errorf("could not find version %s", version) @@ -362,7 +362,7 @@ func decompressTarStream(ctx context.Context, r io.Reader, version string) (stri if _, err := io.Copy(outFile, tarReader); err != nil { return "", fmt.Errorf("failed to write to file %s: %w", path, err) } - outFile.Close() + _ = outFile.Close() log.G(ctx).Debugf("done extracting file: %s", path) if header.Name == expectedFile { binFileName = path diff --git a/internal/util/kube/kube.go b/internal/util/kube/kube.go index ddb1d130..8206f648 100644 --- a/internal/util/kube/kube.go +++ b/internal/util/kube/kube.go @@ -117,7 +117,7 @@ func getPodLogs(ctx context.Context, client kubernetes.Interface, namespace, nam if err != nil { return "", fmt.Errorf("failed to get network-tester pod logs: %w", err) } - defer podLogs.Close() + defer func() { _ = podLogs.Close() }() logsBuf := new(bytes.Buffer) _, err = io.Copy(logsBuf, podLogs) diff --git a/internal/util/kust/util.go b/internal/util/kust/util.go index 83d764a5..7320ff99 100644 --- a/internal/util/kust/util.go +++ b/internal/util/kust/util.go @@ -29,7 +29,7 @@ func BuildKustomization(k *kusttypes.Kustomization) ([]byte, error) { if err != nil { return nil, err } - defer os.RemoveAll(td) + defer func() { _ = os.RemoveAll(td) }() kyaml, err := yaml.Marshal(k) if err != nil { From 29f4d35d0918a984b4587ebe25f186cd7e3cd25c Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 13:23:25 +0200 Subject: [PATCH 09/14] upd lint --- .golangci.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.golangci.yaml b/.golangci.yaml index 1f972ebb..ea62a9a4 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -3,7 +3,7 @@ version: "2" # options for analysis running run: # Updated to match go.mod version - go: "1.25" + go: "1.24" # default concurrency is a available CPU number concurrency: 4 From b997a2ee02ede05d332fecdd475ffd92b4afd01f Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 13:28:40 +0200 Subject: [PATCH 10/14] Revert "upd lint" This reverts commit b4cdd19a167f784f503ac49c893e4f7bef0cb624. # Conflicts: # .golangci.yaml --- .golangci.yaml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index ea62a9a4..77dfb56f 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,9 +1,10 @@ -version: "2" +# This file contains all available configuration options +# with their default values. # options for analysis running run: # Updated to match go.mod version - go: "1.24" + go: "1.25" # default concurrency is a available CPU number concurrency: 4 @@ -15,14 +16,12 @@ run: issues-exit-code: 1 linters: - default: none enable: - gocyclo - errcheck - godox - # all available settings of specific linters -linters.settings: +linters-settings: errcheck: # report about not checking of errors in type assertions: `a := b.(MyStruct)`; # default is false: such cases aren't reported by default. From 77c36e600b59dd05145c8188a8cca0c88f47b689 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 13:33:06 +0200 Subject: [PATCH 11/14] downgraded golang in go.mod --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index c21cd6a4..68a7299e 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/codefresh-io/cli-v2 -go 1.25.3 +go 1.24.6 require ( github.com/Masterminds/semver/v3 v3.3.1 From bb48c456bcf312fc343bc164a6c3257be01e790d Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 14:02:50 +0200 Subject: [PATCH 12/14] Revert "Revert "upd lint"" This reverts commit b997a2ee02ede05d332fecdd475ffd92b4afd01f. --- .golangci.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index 77dfb56f..ea62a9a4 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,10 +1,9 @@ -# This file contains all available configuration options -# with their default values. +version: "2" # options for analysis running run: # Updated to match go.mod version - go: "1.25" + go: "1.24" # default concurrency is a available CPU number concurrency: 4 @@ -16,12 +15,14 @@ run: issues-exit-code: 1 linters: + default: none enable: - gocyclo - errcheck - godox + # all available settings of specific linters -linters-settings: +linters.settings: errcheck: # report about not checking of errors in type assertions: `a := b.(MyStruct)`; # default is false: such cases aren't reported by default. From 092c52a8009a5e9b4429f63861b77873d205d2b6 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 14:03:32 +0200 Subject: [PATCH 13/14] Revert "upd lint" This reverts commit b4cdd19a --- .golangci.yaml | 12 ++++++------ Dockerfile | 2 +- cmd/commands/helm.go | 6 +++--- cmd/commands/helm_test.go | 2 +- cmd/commands/product-release_test.go | 2 +- cmd/commands/runtime.go | 4 ++-- hack/license.go | 2 +- internal/git/provider_bitbucket-server.go | 4 ++-- internal/git/provider_bitbucket.go | 2 +- internal/git/provider_github.go | 2 +- internal/git/provider_gitlab.go | 4 ++-- internal/util/cli/cli.go | 6 +++--- internal/util/kube/kube.go | 2 +- internal/util/kust/util.go | 2 +- 14 files changed, 26 insertions(+), 26 deletions(-) diff --git a/.golangci.yaml b/.golangci.yaml index ea62a9a4..4e4e9a24 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,9 +1,11 @@ -version: "2" +# This file contains all available configuration options +# with their default values. # options for analysis running run: - # Updated to match go.mod version - go: "1.24" + # https://github.com/golangci/golangci-lint/issues/2649 + # enable go 1.17 linting, will not allow generics + go: "1.17" # default concurrency is a available CPU number concurrency: 4 @@ -15,14 +17,12 @@ run: issues-exit-code: 1 linters: - default: none enable: - gocyclo - errcheck - godox - # all available settings of specific linters -linters.settings: +linters-settings: errcheck: # report about not checking of errors in type assertions: `a := b.(MyStruct)`; # default is false: such cases aren't reported by default. diff --git a/Dockerfile b/Dockerfile index c718e86d..a14e2c48 100644 --- a/Dockerfile +++ b/Dockerfile @@ -27,7 +27,7 @@ RUN go mod verify ############################### CLI ############################### ### Compile -FROM golang:1.25.3-alpine3.22 AS codefresh-build +FROM golang:1.24.6-alpine3.22 AS codefresh-build WORKDIR /go/src/github.com/codefresh-io/cli-v2 diff --git a/cmd/commands/helm.go b/cmd/commands/helm.go index e3c12d2a..dbf33d94 100644 --- a/cmd/commands/helm.go +++ b/cmd/commands/helm.go @@ -265,7 +265,7 @@ func getPlatformClient(ctx context.Context, opts *HelmValidateValuesOptions, cod } if caCert != "" { - defer func() { _ = os.Remove(caCert) }() + defer os.Remove(caCert) } return cfConfig.NewAdHocClient(ctx, url, cfToken, caCert) @@ -420,7 +420,7 @@ func checkIngressDef(ctx context.Context, opts *HelmValidateValuesOptions, ingre return err } - _ = res.Body.Close() + res.Body.Close() return nil } @@ -462,7 +462,7 @@ func checkGit(ctx context.Context, opts *HelmValidateValuesOptions, values chart } if caCert != "" { - defer func() { _ = os.Remove(caCert) }() + defer os.Remove(caCert) } provider, err := git.GetProvider(cliGitProvider, gitApiUrl, caCert) diff --git a/cmd/commands/helm_test.go b/cmd/commands/helm_test.go index 65266523..158fc3b5 100644 --- a/cmd/commands/helm_test.go +++ b/cmd/commands/helm_test.go @@ -662,7 +662,7 @@ argo-cd: } if got != "" { - defer func() { _ = os.Remove(got) }() + defer os.Remove(got) } if !strings.HasSuffix(got, tt.want) { diff --git a/cmd/commands/product-release_test.go b/cmd/commands/product-release_test.go index 89464158..3f7f7724 100644 --- a/cmd/commands/product-release_test.go +++ b/cmd/commands/product-release_test.go @@ -213,7 +213,7 @@ func getProductReleaseJsonStringMock() ([]map[string]any, error) { if err != nil { return nil, err } - defer func() { _ = file.Close() }() + defer file.Close() data, err := io.ReadAll(file) if err != nil { diff --git a/cmd/commands/runtime.go b/cmd/commands/runtime.go index b644f82b..45075b17 100644 --- a/cmd/commands/runtime.go +++ b/cmd/commands/runtime.go @@ -454,7 +454,7 @@ func downloadRuntimeLogs() error { if err != nil { return err } - defer func() { _ = response.Body.Close() }() + defer response.Body.Close() fullFilename, err := getFullFilename(response) if err != nil { return err @@ -490,7 +490,7 @@ func downloadFile(response *http.Response, fullFilename string) error { if err != nil { return err } - defer func() { _ = fileDescriptor.Close() }() + defer fileDescriptor.Close() _, err = io.Copy(fileDescriptor, response.Body) return err } diff --git a/hack/license.go b/hack/license.go index 7777efaf..f77bb59f 100644 --- a/hack/license.go +++ b/hack/license.go @@ -59,7 +59,7 @@ func main() { } f, err := os.OpenFile(path, os.O_RDWR, info.Mode()) die(err) - defer func() { _ = f.Close() }() + defer f.Close() data, err := io.ReadAll(f) die(err) diff --git a/internal/git/provider_bitbucket-server.go b/internal/git/provider_bitbucket-server.go index fd57ed20..41bcbfcb 100644 --- a/internal/git/provider_bitbucket-server.go +++ b/internal/git/provider_bitbucket-server.go @@ -96,7 +96,7 @@ func (bbs *bitbucketServer) checkProjectAdminPermission(ctx context.Context, tok if err != nil { return fmt.Errorf("failed checking Project admin permission: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() if res.StatusCode != http.StatusBadRequest { return errors.New("git-token is invalid or missing required \"Project admin\" scope") @@ -112,7 +112,7 @@ func (bbs *bitbucketServer) getCurrentUsername(ctx context.Context, token string if err != nil { return "", fmt.Errorf("failed getting current user: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() username := res.Header.Get("X-AUSERNAME") if username == "" { diff --git a/internal/git/provider_bitbucket.go b/internal/git/provider_bitbucket.go index 4d1512cc..58d96644 100644 --- a/internal/git/provider_bitbucket.go +++ b/internal/git/provider_bitbucket.go @@ -123,7 +123,7 @@ func (bb *bitbucket) getCurrentUserScopes(ctx context.Context, token, username s if err != nil { return "", fmt.Errorf("failed getting current user: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() scopes := res.Header.Get("x-oauth-scopes") diff --git a/internal/git/provider_github.go b/internal/git/provider_github.go index c61d5c4c..b0780495 100644 --- a/internal/git/provider_github.go +++ b/internal/git/provider_github.go @@ -116,7 +116,7 @@ func (g *github) verifyToken(ctx context.Context, token string, requiredScopes [ if err != nil { return err } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() rawScopes := res.Header.Get("X-Oauth-Scopes") if rawScopes == "" { diff --git a/internal/git/provider_gitlab.go b/internal/git/provider_gitlab.go index 6ac930b2..9faf48c7 100644 --- a/internal/git/provider_gitlab.go +++ b/internal/git/provider_gitlab.go @@ -98,7 +98,7 @@ func (g *gitlab) checkApiScope(ctx context.Context, token string) error { if err != nil { return fmt.Errorf("failed checking api scope: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() if res.StatusCode != http.StatusBadRequest { return errors.New("git-token is invalid or missing required \"api\" scope") @@ -114,7 +114,7 @@ func (g *gitlab) checkTokenType(token string, ctx context.Context) (string, erro return "", fmt.Errorf("failed getting user: %w", err) } - defer func() { _ = userRes.Body.Close() }() + defer userRes.Body.Close() bodyBytes, err := io.ReadAll(userRes.Body) if err != nil { diff --git a/internal/util/cli/cli.go b/internal/util/cli/cli.go index cc5ce010..b09650ab 100644 --- a/internal/util/cli/cli.go +++ b/internal/util/cli/cli.go @@ -216,7 +216,7 @@ func getLatestCliVersion(ctx context.Context) (*semver.Version, error) { return nil, fmt.Errorf("failed to get latest version file: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() buf := &bytes.Buffer{} @@ -264,7 +264,7 @@ func downloadAndExtract(ctx context.Context, url, version string) (string, error if err != nil { return "", fmt.Errorf("failed send request: %w", err) } - defer func() { _ = res.Body.Close() }() + defer res.Body.Close() if res.StatusCode == http.StatusNotFound { return "", fmt.Errorf("could not find version %s", version) @@ -362,7 +362,7 @@ func decompressTarStream(ctx context.Context, r io.Reader, version string) (stri if _, err := io.Copy(outFile, tarReader); err != nil { return "", fmt.Errorf("failed to write to file %s: %w", path, err) } - _ = outFile.Close() + outFile.Close() log.G(ctx).Debugf("done extracting file: %s", path) if header.Name == expectedFile { binFileName = path diff --git a/internal/util/kube/kube.go b/internal/util/kube/kube.go index 8206f648..ddb1d130 100644 --- a/internal/util/kube/kube.go +++ b/internal/util/kube/kube.go @@ -117,7 +117,7 @@ func getPodLogs(ctx context.Context, client kubernetes.Interface, namespace, nam if err != nil { return "", fmt.Errorf("failed to get network-tester pod logs: %w", err) } - defer func() { _ = podLogs.Close() }() + defer podLogs.Close() logsBuf := new(bytes.Buffer) _, err = io.Copy(logsBuf, podLogs) diff --git a/internal/util/kust/util.go b/internal/util/kust/util.go index 7320ff99..83d764a5 100644 --- a/internal/util/kust/util.go +++ b/internal/util/kust/util.go @@ -29,7 +29,7 @@ func BuildKustomization(k *kusttypes.Kustomization) ([]byte, error) { if err != nil { return nil, err } - defer func() { _ = os.RemoveAll(td) }() + defer os.RemoveAll(td) kyaml, err := yaml.Marshal(k) if err != nil { From bc788bf2d4dd604cf86fa26d14d45514869309f6 Mon Sep 17 00:00:00 2001 From: vitaliichyrka Date: Mon, 27 Oct 2025 14:13:25 +0200 Subject: [PATCH 14/14] add filepath-securejoin override --- go.mod | 3 +++ go.sum | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/go.mod b/go.mod index 68a7299e..cd8aa4e4 100644 --- a/go.mod +++ b/go.mod @@ -223,6 +223,9 @@ require ( ) replace ( + // to avoid error : ../gopath/pkg/mod/github.com/argoproj/argo-cd/v2@v2.14.20/util/io/files/secure_mkdir_linux.go:16:47: cannot use int(mode) (value of type int) as os.FileMode value in argument to securejoin.MkdirAll + github.com/cyphar/filepath-securejoin => github.com/cyphar/filepath-securejoin v0.3.6 + github.com/go-telegram-bot-api/telegram-bot-api/v5 => github.com/OvyFlash/telegram-bot-api/v5 v5.0.0-20240108230938-63e5c59035bf github.com/golang/protobuf => github.com/golang/protobuf v1.5.4 diff --git a/go.sum b/go.sum index 0062628f..bdae1a52 100644 --- a/go.sum +++ b/go.sum @@ -121,8 +121,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6N github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/creack/pty v1.1.21 h1:1/QdRyBaHHJP61QkWMXlOIBfsgdDeeKfK8SYVUWJKf0= github.com/creack/pty v1.1.21/go.mod h1:MOBLtS5ELjhRRrroQr9kyvTxUAFNvYEK993ew/Vr4O4= -github.com/cyphar/filepath-securejoin v0.4.1 h1:JyxxyPEaktOD+GAnqIqTf9A8tHyAG22rowi7HkoSU1s= -github.com/cyphar/filepath-securejoin v0.4.1/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= +github.com/cyphar/filepath-securejoin v0.3.6 h1:4d9N5ykBnSp5Xn2JkhocYDkOpURL/18CYMpo6xB9uWM= +github.com/cyphar/filepath-securejoin v0.3.6/go.mod h1:Sdj7gXlvMcPZsbhwhQ33GguGLDGQL7h7bg04C/+u9jI= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=