automate updating gotestsum

pull/14225/head
Steven Powell 2022-05-24 13:00:00 -07:00
parent 0dd7c8609e
commit 6709ef5db8
6 changed files with 146 additions and 3 deletions

View File

@ -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 <minikube-bot@google.com>
author: minikube-bot <minikube-bot@google.com>
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.

View File

@ -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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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=<string>: 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=<string>: 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
}