From 6709ef5db822b30afc3a4b807ef655ba305fa073 Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Tue, 24 May 2022 13:00:00 -0700 Subject: [PATCH 1/2] automate updating gotestsum --- .../workflows/update-gotestsum-version.yml | 44 +++++++++ Makefile | 5 + hack/jenkins/common.ps1 | 2 +- .../installers/check_install_gotestsum.sh | 2 +- .../gopogh_version/update_gopogh_version.go | 2 +- .../update_gotestsum_version.go | 94 +++++++++++++++++++ 6 files changed, 146 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/update-gotestsum-version.yml create mode 100644 hack/update/gotestsum_version/update_gotestsum_version.go diff --git a/.github/workflows/update-gotestsum-version.yml b/.github/workflows/update-gotestsum-version.yml new file mode 100644 index 0000000000..00b0adda43 --- /dev/null +++ b/.github/workflows/update-gotestsum-version.yml @@ -0,0 +1,44 @@ +name: "update-gotestsum-version" +on: + workflow_dispatch: + schedule: + # every Monday at around 3 am pacific/10 am UTC + - cron: "0 10 * * 1" +env: + GOPROXY: https://proxy.golang.org + GO_VERSION: '1.18.2' +permissions: + contents: read + +jobs: + bump-gotestsum-version: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@629c2de402a417ea7690ca6ce3f33229e27606a5 + - uses: actions/setup-go@fcdc43634adb5f7ae75a9d7a9b9361790f7293e2 + with: + go-version: ${{env.GO_VERSION}} + stable: true + - name: Bump Gotestsum Versions + id: bumpGotestsum + run: | + make update-gotestsum-version + echo "::set-output name=changes::$(git status --porcelain)" + - name: Create PR + if: ${{ steps.bumpGotestsum.outputs.changes != '' }} + uses: peter-evans/create-pull-request@f094b77505fb89581e68a1163fbd2fffece39da1 + with: + token: ${{ secrets.MINIKUBE_BOT_PAT }} + commit-message: bump gotestsum versions + committer: minikube-bot + author: minikube-bot + branch: auto_bump_gotestsum_version + push-to-fork: minikube-bot/minikube + base: master + delete-branch: true + title: 'bump gotestsum version' + labels: ok-to-test + body: | + Gotestsum Project release a [new version](https://github.com/gotestyourself/gotestsum/releases), + + This PR was auto-generated by `make update-gotestsum-version` using [update-gotestsum-version.yml](https://github.com/kubernetes/minikube/tree/master/.github/workflows/update-gotestsum-version.yml) CI Workflow. diff --git a/Makefile b/Makefile index c52602394a..2cccef0d24 100644 --- a/Makefile +++ b/Makefile @@ -1039,3 +1039,8 @@ time-to-k8s-benchmark: update-gopogh-version: ## update gopogh version (cd hack/update/gopogh_version && \ go run update_gopogh_version.go) + +.PHONY: update-gotestsum-version +update-gotestsum-version: + (cd hack/update/gotestsum_version && \ + go run update_gotestsum_version.go) diff --git a/hack/jenkins/common.ps1 b/hack/jenkins/common.ps1 index da1201176f..551e3d3f09 100644 --- a/hack/jenkins/common.ps1 +++ b/hack/jenkins/common.ps1 @@ -54,7 +54,7 @@ If ($lastexitcode -gt 0) { # Download gopogh and gotestsum (New-Object Net.WebClient).DownloadFile("https://github.com/medyagh/gopogh/releases/download/v0.9.0/gopogh.exe", "C:\Go\bin\gopogh.exe") -(New-Object Net.WebClient).DownloadFile("https://github.com/gotestyourself/gotestsum/releases/download/v1.6.4/gotestsum_1.6.4_windows_amd64.tar.gz", "$env:TEMP\gotestsum.tar.gz") +(New-Object Net.WebClient).DownloadFile("https://github.com/gotestyourself/gotestsum/releases/download/v1.8.1/gotestsum_1.8.1_windows_amd64.tar.gz", "$env:TEMP\gotestsum.tar.gz") tar --directory "C:\Go\bin\" -xzvf "$env:TEMP\gotestsum.tar.gz" "gotestsum.exe" # Grab all the scripts we'll need for integration tests diff --git a/hack/jenkins/installers/check_install_gotestsum.sh b/hack/jenkins/installers/check_install_gotestsum.sh index 4a99d7ca1c..2d58d7e6b5 100755 --- a/hack/jenkins/installers/check_install_gotestsum.sh +++ b/hack/jenkins/installers/check_install_gotestsum.sh @@ -18,7 +18,7 @@ set -eux -o pipefail function install_gotestsum() { rm -f $(which gotestsum) - GOBIN="$GOROOT/bin" go install gotest.tools/gotestsum@v1.6.4 + GOBIN="$GOROOT/bin" go install gotest.tools/gotestsum@v1.8.1 } which gotestsum || install_gotestsum diff --git a/hack/update/gopogh_version/update_gopogh_version.go b/hack/update/gopogh_version/update_gopogh_version.go index aca9092abe..c99c987919 100644 --- a/hack/update/gopogh_version/update_gopogh_version.go +++ b/hack/update/gopogh_version/update_gopogh_version.go @@ -99,7 +99,7 @@ func main() { // gopoghVersion returns gopogh stable version in semver format. func gopoghVersion(ctx context.Context, owner, repo string) (stable string, err error) { - // get Kubernetes versions from GitHub Releases + // get gopogh versions from GitHub Releases stable, _, _, err = update.GHReleases(ctx, owner, repo) if err != nil || !semver.IsValid(stable) { return "", err diff --git a/hack/update/gotestsum_version/update_gotestsum_version.go b/hack/update/gotestsum_version/update_gotestsum_version.go new file mode 100644 index 0000000000..8e00573a4a --- /dev/null +++ b/hack/update/gotestsum_version/update_gotestsum_version.go @@ -0,0 +1,94 @@ +/* +Copyright 2022 The Kubernetes Authors All rights reserved. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +/* +Script expects the following env variables: + - UPDATE_TARGET=: optional - if unset/absent, default option is "fs"; valid options are: + - "fs" - update only local filesystem repo files [default] + - "gh" - update only remote GitHub repo files and create PR (if one does not exist already) + - "all" - update local and remote repo files and create PR (if one does not exist already) + - GITHUB_TOKEN=: GitHub [personal] access token + - note: GITHUB_TOKEN is required if UPDATE_TARGET is "gh" or "all" +*/ + +package main + +import ( + "context" + "strings" + "time" + + "golang.org/x/mod/semver" + "k8s.io/klog/v2" + + "k8s.io/minikube/hack/update" +) + +const ( + // default context timeout + cxTimeout = 300 * time.Second +) + +var ( + schema = map[string]update.Item{ + "hack/jenkins/common.ps1": { + Replace: map[string]string{ + `(?U)https://github.com/gotestyourself/gotestsum/releases/download/.*/gotestsum_.*_`: `https://github.com/gotestyourself/gotestsum/releases/download/v{{.StableVersion}}/gotestsum_{{.StableVersion}}_`, + }, + }, + "hack/jenkins/installers/check_install_gotestsum.sh": { + Replace: map[string]string{ + `gotest.tools/gotestsum@.*`: `gotest.tools/gotestsum@v{{.StableVersion}}`, + }, + }, + } + + // PR data + prBranchPrefix = "update-gotestsum-version_" // will be appended with first 7 characters of the PR commit SHA + prTitle = `update_gotestsum_version: {stable: "{{.StableVersion}}"}` + prIssue = 14224 +) + +// Data holds stable gotestsum version in semver format. +type Data struct { + StableVersion string `json:"stableVersion"` +} + +func main() { + // set a context with defined timeout + ctx, cancel := context.WithTimeout(context.Background(), cxTimeout) + defer cancel() + + // get gotestsum stable version from https://github.com/gotestyourself/gotestsum + stable, err := gotestsumVersion(ctx, "gotestyourself", "gotestsum") + if err != nil || stable == "" { + klog.Fatalf("Unable to get gotestsum stable version: %v", err) + } + data := Data{StableVersion: strings.TrimPrefix(stable, "v")} + klog.Infof("gotestsum stable version: %s", data.StableVersion) + + update.Apply(ctx, schema, data, prBranchPrefix, prTitle, prIssue) +} + +// gotestsumVersion returns gotestsum stable version in semver format. +func gotestsumVersion(ctx context.Context, owner, repo string) (stable string, err error) { + // get gotestsum versions from GitHub Releases + stable, _, _, err = update.GHReleases(ctx, owner, repo) + if err != nil || !semver.IsValid(stable) { + return "", err + } + return stable, nil +} From 910fe36c0741c449c7c614219f9f90edcc3897ef Mon Sep 17 00:00:00 2001 From: Steven Powell Date: Tue, 24 May 2022 13:06:38 -0700 Subject: [PATCH 2/2] update go version --- hack/update/golang_version/update_golang_version.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go index 879639a122..6c9c0b67e8 100644 --- a/hack/update/golang_version/update_golang_version.go +++ b/hack/update/golang_version/update_golang_version.go @@ -111,6 +111,11 @@ var ( `GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`, }, }, + ".github/workflows/update-gotestsum-version.yml": { + Replace: map[string]string{ + `GO_VERSION: .*`: `GO_VERSION: '{{.StableVersion}}'`, + }, + }, "go.mod": { Replace: map[string]string{ `(?m)^go .*`: `go {{.StableVersionMM}}`,