From 4413991c0193fcf96f0bc5cdd9768891d85bc0b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20=C5=BBak?= Date: Tue, 24 Oct 2023 15:47:47 +0200 Subject: [PATCH] chore(tools): Cache rework for CircleCI (#14156) --- .circleci/config.yml | 79 +++++++++++++++++++++++---------- scripts/installgo_linux.sh | 8 ++-- scripts/installgo_mac.sh | 5 ++- scripts/installgo_windows.sh | 9 ++-- scripts/installmingw_windows.sh | 28 ++++++++++++ 5 files changed, 96 insertions(+), 33 deletions(-) create mode 100644 scripts/installmingw_windows.sh diff --git a/.circleci/config.yml b/.circleci/config.yml index 318e1e8b2..0584241ba 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -37,15 +37,34 @@ commands: default: "gotestsum" cache_version: type: string - default: "v2" + default: "v1" goversion: type: string default: 1.21.3 steps: - check-changed-files-or-halt + - when: + condition: + equal: [ windows, << parameters.os >> ] + steps: + - run: + name: Remove Go and MinGW to avoid clashes after upgrade during cache restore + command: | + rm -rf '/c/Program Files/Go' + rm -rf '/c/ProgramData/chocolatey/lib/mingw' + - when: + condition: + equal: [ darwin, << parameters.os >> ] + steps: + - run: + name: Ensure go directory is empty and have proper permissions before cache restore + command: | + sudo rm -rf '/usr/local/Cellar/go' + sudo mkdir -p '/usr/local/Cellar/go' + sudo chown -R $(id -u):$(id -g) '/usr/local/Cellar/go' - restore_cache: name: "Restore binaries from cache" - key: << parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-bins-<< parameters.cache_version >>-<< parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-{{ checksum "go.sum" }} - when: condition: equal: [ linux, << parameters.os >> ] @@ -61,10 +80,11 @@ commands: condition: equal: [ windows, << parameters.os >> ] steps: - - run: rm -rf '/c/Program Files/Go' - run: choco feature enable -n allowGlobalConfirmation + - run: git config --system core.longpaths true - run: 'sh ./scripts/installgo_windows.sh' - - run: choco install mingw --version=12.2.0.03042023 + - run: 'sh ./scripts/installmingw_windows.sh' + - run: choco install make - run: go env - run: go install github.com/golangci/golangci-lint/cmd/golangci-lint@v1.55.0 - when: @@ -103,8 +123,18 @@ commands: equal: [ "386", << parameters.arch >> ] steps: - run: echo 'export RACE="-race"' >> $BASH_ENV - - run: | - GOARCH=<< parameters.arch >> ./<< parameters.gotestsum >> -- ${RACE} -short -cover -coverprofile=coverage.out ./... + - when: + condition: + equal: [ windows, << parameters.os >> ] + steps: + - run: | + export PATH="/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin:$PATH" + GOARCH=<< parameters.arch >> ./<< parameters.gotestsum >> -- ${RACE} -short -cover -coverprofile=coverage.out ./... + - unless: + condition: + equal: [ windows, << parameters.os >> ] + steps: + - run: GOARCH=<< parameters.arch >> ./<< parameters.gotestsum >> -- ${RACE} -short -cover -coverprofile=coverage.out ./... - when: condition: and: @@ -127,7 +157,7 @@ commands: steps: - save_cache: name: 'Saving binaries to cache' - key: << parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-bins-<< parameters.cache_version >>-<< parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '/go/src/github.com/influxdata/telegraf/gotestsum' - when: @@ -136,7 +166,7 @@ commands: steps: - save_cache: name: 'Saving binaries to cache' - key: << parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-bins-<< parameters.cache_version >>-<< parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '~/go/src/github.com/influxdata/telegraf/gotestsum' - '/usr/local/Cellar/go' @@ -148,10 +178,11 @@ commands: steps: - save_cache: name: 'Saving binaries to cache' - key: << parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-bins-<< parameters.cache_version >>-<< parameters.os >>-<< parameters.arch >>-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '~\project\gotestsum.exe' - 'C:\Program Files\Go' + - 'C:\ProgramData\chocolatey\lib\mingw' package-build: parameters: type: @@ -201,12 +232,12 @@ jobs: default: 1.21.3 cache_version: type: string - default: "v2" + default: "v1" steps: - checkout - restore_cache: name: "Restore Go caches" - key: linux-amd64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} - check-changed-files-or-halt - run: ./scripts/make_docs.sh - run: 'make deps' @@ -216,7 +247,7 @@ jobs: - test-go - save_cache: name: "Save Go caches" - key: linux-amd64-go<< parameters.goversion >>-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '/go/pkg/mod' - '~/.cache/golangci-lint' @@ -233,12 +264,12 @@ jobs: default: 1.21.3 cache_version: type: string - default: "v2" + default: "v1" steps: - checkout - restore_cache: name: "Restore Go caches" - key: linux-386-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-386-go<< parameters.goversion >>-{{ checksum "go.sum" }} - check-changed-files-or-halt - run: 'GOARCH=386 make deps' - run: 'GOARCH=386 make tidy' @@ -247,7 +278,7 @@ jobs: arch: "386" - save_cache: name: "Save Go caches" - key: linux-386-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-386-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '/go/pkg/mod' - '~/.cache/golangci-lint' @@ -270,18 +301,18 @@ jobs: default: 1.21.3 cache_version: type: string - default: "v2" + default: "v1" steps: - checkout - restore_cache: name: "Restore Go caches" - key: darwin-arm64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-darwin-arm64-go<< parameters.goversion >>-{{ checksum "go.sum" }} - test-go: os: darwin arch: arm64 - save_cache: name: "Save Go caches" - key: darwin-arm64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-darwin-arm64-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '~/go/pkg/mod' - '~/Library/Caches/golangci-lint' @@ -293,7 +324,7 @@ jobs: default: 1.21.3 cache_version: type: string - default: "v2" + default: "v1" executor: name: win/default shell: bash.exe @@ -302,13 +333,13 @@ jobs: - checkout - restore_cache: name: "Restore Go caches" - key: windows-amd64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-windows-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} - test-go: os: windows gotestsum: "gotestsum.exe" - save_cache: name: "Save Go caches" - key: windows-amd64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-windows-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '~\go\pkg\mod' - '~\AppData\Local\golangci-lint' @@ -322,18 +353,18 @@ jobs: default: 1.21.3 cache_version: type: string - default: "v2" + default: "v1" steps: - checkout - restore_cache: name: "Restore Go caches" - key: linux-amd64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} - check-changed-files-or-halt - run: 'make build_tools' - run: './tools/license_checker/license_checker -whitelist ./tools/license_checker/data/whitelist' - save_cache: name: "Save Go caches" - key: linux-amd64-go<< parameters.goversion >>-cache-<< parameters.cache_version >>-{{ checksum "go.sum" }} + key: go-caches-<< parameters.cache_version >>-linux-amd64-go<< parameters.goversion >>-{{ checksum "go.sum" }} paths: - '/go/pkg/mod' - '~/.cache/golangci-lint' diff --git a/scripts/installgo_linux.sh b/scripts/installgo_linux.sh index 4529da8fc..a472983bb 100644 --- a/scripts/installgo_linux.sh +++ b/scripts/installgo_linux.sh @@ -18,10 +18,6 @@ setup_go () { sudo rm -rfv /usr/local/go sudo tar -C /usr/local -xzf go${GO_VERSION}.${GO_ARCH}.tar.gz - - echo "$PATH" - which go - go version } if command -v go >/dev/null 2>&1; then @@ -34,3 +30,7 @@ if command -v go >/dev/null 2>&1; then else setup_go fi + +echo "$PATH" +command -v go +go version diff --git a/scripts/installgo_mac.sh b/scripts/installgo_mac.sh index 1df850fc4..6e06e3f3d 100644 --- a/scripts/installgo_mac.sh +++ b/scripts/installgo_mac.sh @@ -42,8 +42,11 @@ if command -v go >/dev/null 2>&1; then echo "$v is installed, required version is ${GO_VERSION}" if [ "$v" != ${GO_VERSION} ]; then setup_go - go version fi else setup_go fi + +echo "$PATH" +command -v go +go version diff --git a/scripts/installgo_windows.sh b/scripts/installgo_windows.sh index c16a96f0e..eba7a62f3 100644 --- a/scripts/installgo_windows.sh +++ b/scripts/installgo_windows.sh @@ -5,9 +5,7 @@ set -eux GO_VERSION="1.21.3" setup_go () { - rm -rf '/c/Program Files/Go' - choco upgrade golang --allow-downgrade --version=${GO_VERSION} - choco install make + choco upgrade golang --allow-downgrade --force --version=${GO_VERSION} git config --system core.longpaths true } @@ -17,8 +15,11 @@ if command -v go >/dev/null 2>&1; then echo "$v is installed, required version is ${GO_VERSION}" if [ "$v" != ${GO_VERSION} ]; then setup_go - go version fi else setup_go fi + +echo "$PATH" +command -v go +go version diff --git a/scripts/installmingw_windows.sh b/scripts/installmingw_windows.sh new file mode 100644 index 000000000..ffab28710 --- /dev/null +++ b/scripts/installmingw_windows.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +set -eux + +MINGW_VERSION="12.2.0.03042023" +GCC_VERSION="12.2.0" + +setup_mingw () { + choco upgrade mingw --allow-downgrade --force --version=${MINGW_VERSION} +} + +export PATH="/c/ProgramData/chocolatey/lib/mingw/tools/install/mingw64/bin:$PATH" +echo "$PATH" + +if command -v gcc >/dev/null 2>&1; then + echo "MinGW is already installed" + v=$(gcc -dumpversion) + echo "$v is installed, required version is ${GCC_VERSION}" + if [ "$v" != ${GCC_VERSION} ]; then + setup_mingw + fi +else + setup_mingw +fi + +echo "$PATH" +command -v gcc +gcc -dumpversion