From 7c37b0307ff2bbc081eaddead14d425345113927 Mon Sep 17 00:00:00 2001 From: Anuj Chaudhari Date: Mon, 2 Mar 2026 15:18:19 -0800 Subject: [PATCH 1/5] Bump golang to v1.26 --- .github/workflows/build.yaml | 4 ++-- .github/workflows/cli-coexistence_tests.yaml | 2 +- .github/workflows/cli_core_e2e_sample-plugin.yaml | 2 +- .github/workflows/cli_core_e2e_test.yaml | 2 +- .github/workflows/cli_core_unit_test.yaml | 2 +- .github/workflows/release.yaml | 2 +- .../template/plugintemplates/github_workflow_build.yaml.tmpl | 2 +- .../builder/template/plugintemplates/gitlab-ci.yml.tmpl | 2 +- cmd/plugin/builder/template/plugintemplates/gomod.tmpl | 2 +- docs/plugindev/README.md | 2 +- go.mod | 2 +- test/e2e/coexistence/Dockerfile | 2 +- test/e2e/framework/go.mod | 2 +- test/sample-plugin/go.mod | 2 +- 14 files changed, 15 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index 8dc9a5948..8e27996e2 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -16,10 +16,10 @@ jobs: name: Build runs-on: ubuntu-latest steps: - - name: Set up Go 1.23 + - name: Set up Go 1.26 uses: actions/setup-go@v3 with: - go-version: 1.23 + go-version: "1.26" id: go - name: Config credentials diff --git a/.github/workflows/cli-coexistence_tests.yaml b/.github/workflows/cli-coexistence_tests.yaml index 8dab6487f..d5e5c89e0 100644 --- a/.github/workflows/cli-coexistence_tests.yaml +++ b/.github/workflows/cli-coexistence_tests.yaml @@ -22,7 +22,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v4 with: - go-version: 1.23 + go-version: "1.26" id: go - name: Setup dependencies diff --git a/.github/workflows/cli_core_e2e_sample-plugin.yaml b/.github/workflows/cli_core_e2e_sample-plugin.yaml index 0ed6bd8ad..ee5e9c028 100644 --- a/.github/workflows/cli_core_e2e_sample-plugin.yaml +++ b/.github/workflows/cli_core_e2e_sample-plugin.yaml @@ -25,7 +25,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v3 with: - go-version: 1.23 + go-version: "1.26" id: go - name: go cache diff --git a/.github/workflows/cli_core_e2e_test.yaml b/.github/workflows/cli_core_e2e_test.yaml index cd55839f1..3b259ad29 100644 --- a/.github/workflows/cli_core_e2e_test.yaml +++ b/.github/workflows/cli_core_e2e_test.yaml @@ -25,7 +25,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v3 with: - go-version: 1.23 + go-version: "1.26" id: go - name: go cache diff --git a/.github/workflows/cli_core_unit_test.yaml b/.github/workflows/cli_core_unit_test.yaml index 45b33ce08..976df6dd2 100644 --- a/.github/workflows/cli_core_unit_test.yaml +++ b/.github/workflows/cli_core_unit_test.yaml @@ -24,7 +24,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v3 with: - go-version: 1.23 + go-version: "1.26" id: go - name: go cache diff --git a/.github/workflows/release.yaml b/.github/workflows/release.yaml index f6892fb20..b088ae166 100644 --- a/.github/workflows/release.yaml +++ b/.github/workflows/release.yaml @@ -30,7 +30,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v3 with: - go-version: 1.23 + go-version: "1.26" id: go - name: Check out code into the Go module directory diff --git a/cmd/plugin/builder/template/plugintemplates/github_workflow_build.yaml.tmpl b/cmd/plugin/builder/template/plugintemplates/github_workflow_build.yaml.tmpl index f3fb4c92a..39b85b2e6 100644 --- a/cmd/plugin/builder/template/plugintemplates/github_workflow_build.yaml.tmpl +++ b/cmd/plugin/builder/template/plugintemplates/github_workflow_build.yaml.tmpl @@ -16,7 +16,7 @@ jobs: - name: Set up Go 1.x uses: actions/setup-go@v2 with: - go-version: ^1.20 + go-version: "1.26" id: go - name: Check out code into the Go module directory diff --git a/cmd/plugin/builder/template/plugintemplates/gitlab-ci.yml.tmpl b/cmd/plugin/builder/template/plugintemplates/gitlab-ci.yml.tmpl index 6b00f8472..1dd91b875 100644 --- a/cmd/plugin/builder/template/plugintemplates/gitlab-ci.yml.tmpl +++ b/cmd/plugin/builder/template/plugintemplates/gitlab-ci.yml.tmpl @@ -1,5 +1,5 @@ default: - image: golang:1.20 + image: golang:1.26 stages: - build diff --git a/cmd/plugin/builder/template/plugintemplates/gomod.tmpl b/cmd/plugin/builder/template/plugintemplates/gomod.tmpl index 02f7d502b..6911b081e 100644 --- a/cmd/plugin/builder/template/plugintemplates/gomod.tmpl +++ b/cmd/plugin/builder/template/plugintemplates/gomod.tmpl @@ -1,3 +1,3 @@ module {{ .RepositoryName }} -go 1.20 +go 1.26 diff --git a/docs/plugindev/README.md b/docs/plugindev/README.md index 092da9982..cb5964255 100644 --- a/docs/plugindev/README.md +++ b/docs/plugindev/README.md @@ -40,7 +40,7 @@ development of plugins using other programming languages, at the moment the only supported means of plugin development is that which integrates with the released version of the runtime library. -The minimum supported Go version is 1.18. +The minimum supported Go version is 1.26. You will need Docker to be installed on your development system. diff --git a/go.mod b/go.mod index 116e91776..a4d635a1a 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/vmware-tanzu/tanzu-cli -go 1.22.7 +go 1.26 replace cloud.google.com/go => cloud.google.com/go v0.102.1 diff --git a/test/e2e/coexistence/Dockerfile b/test/e2e/coexistence/Dockerfile index ba2c9e381..0cb766218 100644 --- a/test/e2e/coexistence/Dockerfile +++ b/test/e2e/coexistence/Dockerfile @@ -1,5 +1,5 @@ # Base image and platform -FROM --platform=linux/amd64 golang:1.23 +FROM --platform=linux/amd64 golang:1.26 # Tanzu CLI version and other build arguments ARG TANZU_CLI_BUILD_VERSION diff --git a/test/e2e/framework/go.mod b/test/e2e/framework/go.mod index 70f180eb6..fb0a16008 100644 --- a/test/e2e/framework/go.mod +++ b/test/e2e/framework/go.mod @@ -1,6 +1,6 @@ module github.com/vmware-tanzu/tanzu-cli/test/e2e/framework -go 1.21 +go 1.26 require ( github.com/onsi/ginkgo/v2 v2.12.0 diff --git a/test/sample-plugin/go.mod b/test/sample-plugin/go.mod index fe41d8e3a..d93a22fe9 100644 --- a/test/sample-plugin/go.mod +++ b/test/sample-plugin/go.mod @@ -1,6 +1,6 @@ module sample-plugin -go 1.21 +go 1.26 replace github.com/vmware-tanzu/tanzu-cli/test/e2e/framework => ../e2e/framework From 16e99e32ddd1a87bdc9cd51a926ec0e2ad6619e8 Mon Sep 17 00:00:00 2001 From: Anuj Chaudhari Date: Mon, 2 Mar 2026 15:31:32 -0800 Subject: [PATCH 2/5] Fix markdown link check failures in CI Add mlc_config.json to enable retry on 429 (GitHub rate-limiting) and ignore w3.org URLs that block automated checkers. Update the WCAG 2.0 link in style_guide.md to the canonical URL that returns 200. --- docs/plugindev/style_guide.md | 2 +- mlc_config.json | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 mlc_config.json diff --git a/docs/plugindev/style_guide.md b/docs/plugindev/style_guide.md index 10602f48a..5151257a3 100644 --- a/docs/plugindev/style_guide.md +++ b/docs/plugindev/style_guide.md @@ -543,5 +543,5 @@ To propose changes please create an issue labelled `documentation`, and outline ### Accessibility Guidelines -* Web Content Accessibility Guidelines [WCAG](https://www.w3.org/TR/2008/REC-WCAG20-20081211/) +* Web Content Accessibility Guidelines [WCAG](https://www.w3.org/TR/WCAG20/) * US section 508 [link](https://www.section508.gov/) diff --git a/mlc_config.json b/mlc_config.json new file mode 100644 index 000000000..349cb0e71 --- /dev/null +++ b/mlc_config.json @@ -0,0 +1,11 @@ +{ + "retryOn429": true, + "retryCount": 3, + "fallbackRetryDelay": "30s", + "aliveStatusCodes": [200, 206, 302], + "ignorePatterns": [ + { + "pattern": "^https://www\\.w3\\.org/" + } + ] +} From 47f7b428614c36a5ee8250fbe3e29a5d06cce382 Mon Sep 17 00:00:00 2001 From: Anuj Chaudhari Date: Mon, 2 Mar 2026 15:38:02 -0800 Subject: [PATCH 3/5] Update generated deepcopy copyright year to 2026 controller-gen regenerates zz_generated.deepcopy.go with the current year, causing make verify to fail on the dirty file check. --- apis/cli/v1alpha1/zz_generated.deepcopy.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apis/cli/v1alpha1/zz_generated.deepcopy.go b/apis/cli/v1alpha1/zz_generated.deepcopy.go index d048cd832..bfc40b0a6 100644 --- a/apis/cli/v1alpha1/zz_generated.deepcopy.go +++ b/apis/cli/v1alpha1/zz_generated.deepcopy.go @@ -1,6 +1,6 @@ //go:build !ignore_autogenerated -// Copyright 2025 VMware, Inc. All Rights Reserved. +// Copyright 2026 VMware, Inc. All Rights Reserved. // SPDX-License-Identifier: Apache-2.0 // Code generated by controller-gen. DO NOT EDIT. From a5cb374fadf79700370f97ce19ce43e43135542e Mon Sep 17 00:00:00 2001 From: Anuj Chaudhari Date: Tue, 3 Mar 2026 10:59:30 -0800 Subject: [PATCH 4/5] Remove GCloud dependency from CLI Core E2E test workflow GCloud setup is no longer needed. Tests that depend on GCR images (CRD package) or GCloud auth gracefully self-skip when their required environment variables are not set. --- .github/workflows/cli_core_e2e_test.yaml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/.github/workflows/cli_core_e2e_test.yaml b/.github/workflows/cli_core_e2e_test.yaml index 3b259ad29..dfbff42fb 100644 --- a/.github/workflows/cli_core_e2e_test.yaml +++ b/.github/workflows/cli_core_e2e_test.yaml @@ -38,29 +38,10 @@ jobs: restore-keys: | ${{ runner.os }}-go- - - name: Setup gcloud account - env: - GCP_SA: ${{ secrets.GCP_SA }} - GCP_PROJECT_NAME: ${{ secrets.GCP_PROJECT_NAME }} - run: | - if [ -n "$GCP_SA" ]; then - # Download and install Google Cloud SDK - wget https://dl.google.com/dl/cloudsdk/release/google-cloud-sdk.tar.gz - tar zxvf google-cloud-sdk.tar.gz && ./google-cloud-sdk/install.sh --usage-reporting=false --path-update=true - PATH="google-cloud-sdk/bin:${PATH}" - gcloud --quiet components update - - echo $GCP_SA > ${HOME}/gcloud-service-key.json - gcloud auth activate-service-account --key-file ${HOME}/gcloud-service-key.json - cat ${HOME}/gcloud-service-key.json | docker login -u _json_key --password-stdin https://gcr.io - gcloud config set project $GCP_PROJECT_NAME - fi - - name: Setup dependencies run: | make tools echo "${PWD}/hack/tools/bin" >> $GITHUB_PATH - echo "${PWD}/google-cloud-sdk/bin" >> $GITHUB_PATH echo "${PWD}/bin" >> $GITHUB_PATH - name: Build CLI Core @@ -75,7 +56,6 @@ jobs: env: TANZU_API_TOKEN: ${{ secrets.TANZU_API_TOKEN }} TANZU_CLI_TMC_UNSTABLE_URL: ${{ secrets.TANZU_CLI_TMC_UNSTABLE_URL }} - CRD_PACKAGE_IMAGE : ${{ secrets.CRD_PACKAGE_IMAGE_FOR_TEST }} run: | make e2e-cli-core From 39c6d4e105f26d0522d05823b26d7db20760c234 Mon Sep 17 00:00:00 2001 From: Anuj Chaudhari Date: Tue, 3 Mar 2026 11:05:26 -0800 Subject: [PATCH 5/5] Generate self-signed TLS certs locally instead of downloading from GCS The test certs tarball on storage.googleapis.com is no longer available (404). Replace the download with an openssl command that generates the self-signed localhost cert/key pair on the fly. --- Makefile | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 28ceafd05..6b8dfb6c0 100644 --- a/Makefile +++ b/Makefile @@ -270,8 +270,12 @@ e2e-cli-core: tools crd-package-for-test start-test-central-repo start-airgapped .PHONY: setup-custom-cert-for-test-central-repo setup-custom-cert-for-test-central-repo: ## Setup up the custom ca cert for test-central-repo in the config file @if [ ! -d $(ROOT_DIR)/hack/central-repo/certs ]; then \ - wget https://storage.googleapis.com/tanzu-cli/data/testcerts/local-central-repo-testcontent.bz2 -O $(ROOT_DIR)/hack/central-repo/local-central-repo-testcontent.bz2;\ - tar xjf $(ROOT_DIR)/hack/central-repo/local-central-repo-testcontent.bz2 -C $(ROOT_DIR)/hack/central-repo/;\ + mkdir -p $(ROOT_DIR)/hack/central-repo/certs; \ + openssl req -x509 -newkey rsa:4096 -sha256 -days 3650 -nodes \ + -keyout $(ROOT_DIR)/hack/central-repo/certs/localhost.key \ + -out $(ROOT_DIR)/hack/central-repo/certs/localhost.crt \ + -subj "/CN=localhost" \ + -addext "subjectAltName=DNS:localhost,IP:127.0.0.1"; \ fi echo "Adding docker test central repo cert to the config file" TANZU_CLI_CEIP_OPT_IN_PROMPT_ANSWER="No" TANZU_CLI_EULA_PROMPT_ANSWER="Yes" $(ROOT_DIR)/bin/tanzu config cert delete localhost:9876 || true