diff --git a/.changelog/20062.txt b/.changelog/20062.txt new file mode 100644 index 000000000000..81568f397f5d --- /dev/null +++ b/.changelog/20062.txt @@ -0,0 +1,3 @@ +```release-note:improvement +Upgrade to use Go 1.21.6. +``` diff --git a/.github/workflows/go-tests.yml b/.github/workflows/go-tests.yml index cc6e359102fc..77f431b6080a 100644 --- a/.github/workflows/go-tests.yml +++ b/.github/workflows/go-tests.yml @@ -423,9 +423,11 @@ jobs: consul-license: ${{secrets.CONSUL_LICENSE}} datadog-api-key: "${{ !endsWith(github.repository, '-enterprise') && secrets.DATADOG_API_KEY || '' }}" - go-test-api-1-19: + go-test-api-backwards-compatibility: + name: go-test-api-${{ needs.get-go-version.outputs.go-version-previous }} needs: - setup + - get-go-version - dev-build uses: ./.github/workflows/reusable-unit.yml with: @@ -433,7 +435,7 @@ jobs: runs-on: ${{ needs.setup.outputs.compute-large }} repository-name: ${{ github.repository }} go-tags: "${{ github.event.repository.name == 'consul-enterprise' && 'consulent consulprem consuldev' || '' }}" - go-version: "1.19" + go-version: ${{ needs.get-go-version.outputs.go-version-previous }} permissions: id-token: write # NOTE: this permission is explicitly required for Vault auth. contents: read @@ -442,9 +444,10 @@ jobs: consul-license: ${{secrets.CONSUL_LICENSE}} datadog-api-key: "${{ !endsWith(github.repository, '-enterprise') && secrets.DATADOG_API_KEY || '' }}" - go-test-api-1-20: + go-test-api: needs: - setup + - get-go-version - dev-build uses: ./.github/workflows/reusable-unit.yml with: @@ -452,7 +455,7 @@ jobs: runs-on: ${{ needs.setup.outputs.compute-large }} repository-name: ${{ github.repository }} go-tags: "${{ github.event.repository.name == 'consul-enterprise' && 'consulent consulprem consuldev' || '' }}" - go-version: "1.20" + go-version: ${{ needs.get-go-version.outputs.go-version }} permissions: id-token: write # NOTE: this permission is explicitly required for Vault auth. contents: read @@ -461,9 +464,11 @@ jobs: consul-license: ${{secrets.CONSUL_LICENSE}} datadog-api-key: "${{ !endsWith(github.repository, '-enterprise') && secrets.DATADOG_API_KEY || '' }}" - go-test-sdk-1-19: + go-test-sdk-backwards-compatibility: + name: go-test-sdk-${{ needs.get-go-version.outputs.go-version-previous }} needs: - setup + - get-go-version - dev-build uses: ./.github/workflows/reusable-unit.yml with: @@ -471,7 +476,7 @@ jobs: runs-on: ${{ needs.setup.outputs.compute-large }} repository-name: ${{ github.repository }} go-tags: "${{ github.event.repository.name == 'consul-enterprise' && 'consulent consulprem consuldev' || '' }}" - go-version: "1.19" + go-version: ${{ needs.get-go-version.outputs.go-version-previous }} permissions: id-token: write # NOTE: this permission is explicitly required for Vault auth. contents: read @@ -480,9 +485,10 @@ jobs: consul-license: ${{secrets.CONSUL_LICENSE}} datadog-api-key: "${{ !endsWith(github.repository, '-enterprise') && secrets.DATADOG_API_KEY || '' }}" - go-test-sdk-1-20: + go-test-sdk: needs: - setup + - get-go-version - dev-build uses: ./.github/workflows/reusable-unit.yml with: @@ -490,7 +496,7 @@ jobs: runs-on: ${{ needs.setup.outputs.compute-large }} repository-name: ${{ github.repository }} go-tags: "${{ github.event.repository.name == 'consul-enterprise' && 'consulent consulprem consuldev' || '' }}" - go-version: "1.20" + go-version: ${{ needs.get-go-version.outputs.go-version }} permissions: id-token: write # NOTE: this permission is explicitly required for Vault auth. contents: read @@ -536,10 +542,10 @@ jobs: - go-test-race - go-test-envoyextensions - go-test-troubleshoot - - go-test-api-1-19 - - go-test-api-1-20 - - go-test-sdk-1-19 - - go-test-sdk-1-20 + - go-test-api-backwards-compatibility + - go-test-api + - go-test-sdk-backwards-compatibility + - go-test-sdk - go-test-32bit # - go-test-s390x runs-on: ${{ fromJSON(needs.setup.outputs.compute-small) }} diff --git a/.github/workflows/reusable-get-go-version.yml b/.github/workflows/reusable-get-go-version.yml index efd936c06c7f..ea2d6f5c8fd8 100644 --- a/.github/workflows/reusable-get-go-version.yml +++ b/.github/workflows/reusable-get-go-version.yml @@ -6,6 +6,9 @@ on: go-version: description: "The Go version detected by this workflow" value: ${{ jobs.get-go-version.outputs.go-version }} + go-version-previous: + description: "The Go version (MAJOR.MINOR) prior to the current one, used for backwards compatibility testing" + value: ${{ jobs.get-go-version.outputs.go-version-previous }} jobs: get-go-version: @@ -13,6 +16,7 @@ jobs: runs-on: ubuntu-latest outputs: go-version: ${{ steps.get-go-version.outputs.go-version }} + go-version-previous: ${{ steps.get-go-version.outputs.go-version-previous }} steps: - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3 - name: Determine Go version @@ -32,3 +36,7 @@ jobs: GO_VERSION=$(head -n 1 .go-version) echo "Building with Go ${GO_VERSION}" echo "go-version=${GO_VERSION}" >> $GITHUB_OUTPUT + GO_MINOR_VERSION=${GO_VERSION%.*} + GO_VERSION_PREVIOUS="${GO_MINOR_VERSION%.*}.$((${GO_MINOR_VERSION#*.}-1))" + echo "Previous version ${GO_VERSION_PREVIOUS}" + echo "go-version-previous=${GO_VERSION_PREVIOUS}" >> $GITHUB_OUTPUT diff --git a/.github/workflows/reusable-lint.yml b/.github/workflows/reusable-lint.yml index 3e71c88784a4..82c68bc21998 100644 --- a/.github/workflows/reusable-lint.yml +++ b/.github/workflows/reusable-lint.yml @@ -48,11 +48,13 @@ jobs: with: go-version: ${{ inputs.go-version }} - run: go env + - name: Set golangci-lint version + run: echo "GOLANGCI_LINT_VERSION=$(make --no-print-directory print-GOLANGCI_LINT_VERSION)" >> $GITHUB_ENV - name: lint-${{ matrix.directory }} uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # pin@v3.4.0 with: working-directory: ${{ matrix.directory }} - version: v1.51.1 + version: ${{ env.GOLANGCI_LINT_VERSION }} args: --build-tags="${{ env.GOTAGS }}" -v skip-cache: true - name: Notify Slack diff --git a/.go-version b/.go-version index adcfeed91395..c262b1f0dfd4 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.12 \ No newline at end of file +1.21.6 diff --git a/.golangci.yml b/.golangci.yml index 3e45ef464c14..54fd8468abaa 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -93,18 +93,14 @@ linters-settings: - google.golang.org/protobuf depguard: - list-type: denylist - include-go-root: true - # A list of packages for the list type specified. - # Default: [] - packages: - - net/rpc - # A list of packages for the list type specified. - # Specify an error message to output when a denied package is used. - # Default: [] - packages-with-error-message: - - net/rpc: "only use forked copy in github.com/hashicorp/consul-net-rpc/net/rpc" - - github.com/golang/protobuf: "only use google.golang.org/protobuf" + rules: + main: + listMode: lax + deny: + - pkg: net/rpc + desc: "only use forked copy in github.com/hashicorp/consul-net-rpc/net/rpc" + - pkg: github.com/golang/protobuf + desc: "only use google.golang.org/protobuf" run: timeout: 10m diff --git a/GNUmakefile b/GNUmakefile index fc5d93b8a969..ea7349894c0a 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -9,7 +9,7 @@ GO_MODULES := $(shell find . -name go.mod -exec dirname {} \; | grep -v "proto-g # These version variables can either be a valid string for "go install @" # or the string @DEV to imply use what is currently installed locally. ### -GOLANGCI_LINT_VERSION='v1.51.1' +GOLANGCI_LINT_VERSION='v1.55.2' MOCKERY_VERSION='v2.20.0' BUF_VERSION='v1.14.0' diff --git a/api/api_test.go b/api/api_test.go index 4d5dd1fda830..e42cd7ef1b6c 100644 --- a/api/api_test.go +++ b/api/api_test.go @@ -717,8 +717,11 @@ func TestAPI_ClientTLSOptions(t *testing.T) { // Should fail _, err = client.Agent().Self() - if err == nil || !strings.Contains(err.Error(), "bad certificate") { - t.Fatal(err) + // Check for one of the possible cert error messages + // See https://cs.opensource.google/go/go/+/62a994837a57a7d0c58bb364b580a389488446c9 + if err == nil || !(strings.Contains(err.Error(), "tls: bad certificate") || + strings.Contains(err.Error(), "tls: certificate required")) { + t.Fatalf("expected tls certificate error, but got '%v'", err) } })