diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 6ba172a754e5..5ba1f50ae717 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -15,6 +15,27 @@ jobs: with: go-version: ${{env.GO_VERSION}} stable: true - - name: gendocs + - name: Generate Docs + id: gendocs run: | - ./hack/generate_docs.sh ${{ secrets.MINIKUBE_BOT_PAT }} + make generate-docs + echo "::set-output name=changes::$(git status --porcelain)" + - name: Create PR + if: ${{ steps.gendocs.outputs.changes != '' }} + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.MINIKUBE_BOT_PAT }} + commit-message: Update auto-generated docs and translations + committer: minikube-bot + author: minikube-bot + branch: gendocs + push-to-fork: minikube-bot/minikube + base: master + delete-branch: true + title: 'Update auto-generated docs and translations' + body: | + Committing changes resulting from `make generate-docs`. + This PR is auto-generated by the [gendocs](https://github.com/kubernetes/minikube/blob/master/.github/workflows/docs.yml) CI workflow. + ``` + ${{ steps.gendocs.outputs.changes }} + ``` diff --git a/.github/workflows/time-to-k8s.yml b/.github/workflows/time-to-k8s.yml index 4917d8fd6e79..18762b1093ec 100644 --- a/.github/workflows/time-to-k8s.yml +++ b/.github/workflows/time-to-k8s.yml @@ -7,7 +7,7 @@ env: GO_VERSION: 1.16.4 jobs: benchmark: - runs-on: ubuntu-18.04 + runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - name: Checkout submodules diff --git a/.github/workflows/update-k8s-versions.yml b/.github/workflows/update-k8s-versions.yml new file mode 100644 index 000000000000..cf2a663c7779 --- /dev/null +++ b/.github/workflows/update-k8s-versions.yml @@ -0,0 +1,41 @@ +name: "update-kubernetes-versions" +on: + schedule: + # every week on Thursday at 20:30 UTC + - cron: "45 20 * * 4" +env: + GOPROXY: https://proxy.golang.org + GO_VERSION: 1.16.4 +jobs: + bump-k8s-versions: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-go@v2 + with: + go-version: ${{env.GO_VERSION}} + stable: true + - name: Bump Kuberenetes Versions + id: bumpk8s + run: | + make update-kubernetes-version + echo "::set-output name=changes::$(git status --porcelain)" + - name: Create PR + if: ${{ steps.bumpk8s.outputs.changes != '' }} + uses: peter-evans/create-pull-request@v3 + with: + token: ${{ secrets.MINIKUBE_BOT_PAT }} + commit-message: bump default/newest kubernetes versions + committer: minikube-bot + author: minikube-bot + branch: auto_bump_k8s_versions + push-to-fork: minikube-bot/minikube + base: master + delete-branch: true + title: 'bump default/newest kubernetes versions' + body: | + This PR was auto-generated by `make update-kubernetes-version` using [update-k8s-versions.yml](https://github.com/kubernetes/minikube/tree/master/.github/workflows) CI Workflow. + Please only merge if all the tests pass. + + ${{ steps.bumpk8s.outputs.changes }} + diff --git a/CHANGELOG.md b/CHANGELOG.md index 947990df5587..d76cf2cf4cff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,69 @@ # Release Notes +## Version 1.22.0-beta.0 - 2021-06-28 + +Features: + +* auto-pause addon: add support for arm64 [#11743](https://github.com/kubernetes/minikube/pull/11743) +* `addon list`: add info on each addon's maintainer [#11753](https://github.com/kubernetes/minikube/pull/11753) +* add ability to pass max to `--cpu` and `--memory` flags [#11692](https://github.com/kubernetes/minikube/pull/11692) + +Bugs: + +* Fix `--base-image` caching for images specified by name:tag [#11603](https://github.com/kubernetes/minikube/pull/11603) +* Fix embed-certs global config [#11576](https://github.com/kubernetes/minikube/pull/11576) +* Fix a download link to use arm64 instead of amd64 [#11653](https://github.com/kubernetes/minikube/pull/11653) +* fix downloading duplicate base image [#11690](https://github.com/kubernetes/minikube/pull/11690) +* fix multi-node loosing track of nodes after second restart [#11731](https://github.com/kubernetes/minikube/pull/11731) +* gcp-auth: do not override existing environment variables in pods [#11665](https://github.com/kubernetes/minikube/pull/11665) + +Minor improvements: + +* Allow running amd64 binary on M1 [#11674](https://github.com/kubernetes/minikube/pull/11674) +* improve containerd experience on cgroup v2 [#11632](https://github.com/kubernetes/minikube/pull/11632) +* Improve French locale [#11728](https://github.com/kubernetes/minikube/pull/11728) +* Fix UI error for stoppping systemd service [#11667](https://github.com/kubernetes/minikube/pull/11667) +* international languages: allow using LC_ALL env to set local language for windows [#11721](https://github.com/kubernetes/minikube/pull/11721) +* Change registery_mirror to registery-mirror [#11678](https://github.com/kubernetes/minikube/pull/11678) + +Version Upgrades: + +* ISO: Upgrade podman to 3.1.2 [#11704](https://github.com/kubernetes/minikube/pull/11704) +* Upgrade Buildroot to 2021.02 LTS with Linux 4.19 [#11688](https://github.com/kubernetes/minikube/pull/11688) + +For a more detailed changelog, including changes occuring in pre-release versions, see [CHANGELOG.md](https://github.com/kubernetes/minikube/blob/master/CHANGELOG.md). + +Thank you to our contributors for this release! + +- Anders F Björklund +- Andriy Dzikh +- Daehyeok Mun +- Dongjoon Hyun +- Felipe Crescencio de Oliveira +- Ilya Zuyev +- JacekDuszenko +- Jeff MAURY +- Medya Ghazizadeh +- Peixuan Ding +- RA489 +- Sharif Elgamal +- Steven Powell +- Vishal Jain +- zhangdb-git + +Thank you to our PR reviewers for this release! + +- medyagh (63 comments) +- sharifelgamal (9 comments) +- ilya-zuyev (6 comments) +- andriyDev (3 comments) +- spowelljr (3 comments) +- afbjorklund (1 comments) +- prezha (1 comments) +- tharun208 (1 comments) + +Thank you to our triage members for this release! + ## Version 1.21.0 - 2021-06-10 * add more polish translations [#11587](https://github.com/kubernetes/minikube/pull/11587) * Modify MetricsServer to use v1 api version (instead of v1beta1). [#11584](https://github.com/kubernetes/minikube/pull/11584) diff --git a/Makefile b/Makefile index dd51d6f728d0..8cfa2b19d8ee 100644 --- a/Makefile +++ b/Makefile @@ -14,8 +14,8 @@ # Bump these on release - and please check ISO_VERSION for correctness. VERSION_MAJOR ?= 1 -VERSION_MINOR ?= 21 -VERSION_BUILD ?= 0 +VERSION_MINOR ?= 22 +VERSION_BUILD ?= 0-beta.0 RAW_VERSION=$(VERSION_MAJOR).$(VERSION_MINOR).$(VERSION_BUILD) VERSION ?= v$(RAW_VERSION) @@ -39,7 +39,7 @@ KVM_GO_VERSION ?= $(GO_VERSION:.0=) INSTALL_SIZE ?= $(shell du out/minikube-windows-amd64.exe | cut -f1) -BUILDROOT_BRANCH ?= 2021.02.3 +BUILDROOT_BRANCH ?= 2020.02.12 REGISTRY ?= gcr.io/k8s-minikube # Get git commit id @@ -54,7 +54,9 @@ HYPERKIT_BUILD_IMAGE ?= neilotoole/xcgo:go1.15 BUILD_IMAGE ?= us.gcr.io/k8s-artifacts-prod/build-image/kube-cross:v$(GO_VERSION)-1 ISO_BUILD_IMAGE ?= $(REGISTRY)/buildroot-image -KVM_BUILD_IMAGE ?= $(REGISTRY)/kvm-build-image:$(KVM_GO_VERSION) + +KVM_BUILD_IMAGE_AMD64 ?= $(REGISTRY)/kvm-build-image_amd64:$(KVM_GO_VERSION) +KVM_BUILD_IMAGE_ARM64 ?= $(REGISTRY)/kvm-build-image_arm64:$(KVM_GO_VERSION) ISO_BUCKET ?= minikube/iso @@ -63,7 +65,7 @@ MINIKUBE_BUCKET ?= minikube/releases MINIKUBE_UPLOAD_LOCATION := gs://${MINIKUBE_BUCKET} MINIKUBE_RELEASES_URL=https://github.com/kubernetes/minikube/releases/download -KERNEL_VERSION ?= 4.19.194 +KERNEL_VERSION ?= 4.19.182 # latest from https://github.com/golangci/golangci-lint/releases GOLINT_VERSION ?= v1.39.0 # Limit number of default jobs, to avoid the CI builds running out of memory @@ -278,6 +280,8 @@ minikube_iso: deploy/iso/minikube-iso/board/coreos/minikube/rootfs-overlay/usr/b git clone --depth=1 --branch=$(BUILDROOT_BRANCH) https://github.com/buildroot/buildroot $(BUILD_DIR)/buildroot; \ fi; $(MAKE) BR2_EXTERNAL=../../deploy/iso/minikube-iso minikube_defconfig -C $(BUILD_DIR)/buildroot + mkdir -p $(BUILD_DIR)/buildroot/output/build + echo "module buildroot.org/go" > $(BUILD_DIR)/buildroot/output/build/go.mod $(MAKE) -C $(BUILD_DIR)/buildroot host-python $(MAKE) -C $(BUILD_DIR)/buildroot mv $(BUILD_DIR)/buildroot/output/images/rootfs.iso9660 $(BUILD_DIR)/minikube.iso @@ -320,7 +324,12 @@ test-pkg/%: ## Trigger packaging test all: cross drivers e2e-cross cross-tars exotic retro out/gvisor-addon ## Build all different minikube components .PHONY: drivers -drivers: docker-machine-driver-hyperkit docker-machine-driver-kvm2 ## Build Hyperkit and KVM2 drivers +drivers: ## Build Hyperkit and KVM2 drivers +drivers: docker-machine-driver-hyperkit \ + docker-machine-driver-kvm2 \ + out/docker-machine-driver-kvm2-amd64 \ + out/docker-machine-driver-kvm2-arm64 + .PHONY: docker-machine-driver-hyperkit docker-machine-driver-hyperkit: out/docker-machine-driver-hyperkit ## Build Hyperkit driver @@ -422,7 +431,8 @@ checksum: ## Generate checksums for f in out/minikube.iso out/minikube-linux-amd64 out/minikube-linux-arm \ out/minikube-linux-arm64 out/minikube-linux-ppc64le out/minikube-linux-s390x \ out/minikube-darwin-amd64 out/minikube-windows-amd64.exe \ - out/docker-machine-driver-kvm2 out/docker-machine-driver-hyperkit; do \ + out/docker-machine-driver-kvm2 out/docker-machine-driver-kvm2-amd64 out/docker-machine-driver-kvm2-arm64 \ + out/docker-machine-driver-hyperkit; do \ if [ -f "$${f}" ]; then \ openssl sha256 "$${f}" | awk '{print $$2}' > "$${f}.sha256" ; \ fi ; \ @@ -508,12 +518,12 @@ verify-iso: # Make sure the current ISO exists in the expected bucket out/docs/minikube.md: $(shell find "cmd") $(shell find "pkg/minikube/constants") go run -ldflags="$(MINIKUBE_LDFLAGS)" -tags gendocs hack/help_text/gen_help_text.go - .PHONY: debs ## Build all deb packages debs: out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb \ out/minikube_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb \ - out/docker-machine-driver-kvm2_$(DEB_VERSION).deb - + out/docker-machine-driver-kvm2_$(DEB_VERSION).deb \ + out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_amd64.deb \ + out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb .PHONY: deb_version deb_version: @@ -783,69 +793,98 @@ out/docker-machine-driver-kvm2-aarch64: out/docker-machine-driver-kvm2-arm64 $(if $(quiet),@echo " CP $@") $(Q)cp $< $@ -out/docker-machine-driver-kvm2-%: -ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) - docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE) || $(MAKE) kvm-image - $(call DOCKER,$(KVM_BUILD_IMAGE),/usr/bin/make $@ COMMIT=$(COMMIT)) - # make extra sure that we are linking with the older version of libvirt (1.3.1) - test "`strings $@ | grep '^LIBVIRT_[0-9]' | sort | tail -n 1`" = "LIBVIRT_1.2.9" -else - $(if $(quiet),@echo " GO $@") - $(Q)GOARCH=$* \ - go build \ - -installsuffix "static" \ - -ldflags="$(KVM2_LDFLAGS)" \ - -tags "libvirt.1.3.1 without_lxc" \ - -o $@ \ - k8s.io/minikube/cmd/drivers/kvm -endif - chmod +X $@ out/docker-machine-driver-kvm2_$(DEB_VERSION).deb: out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_amd64.deb cp $< $@ +out/docker-machine-driver-kvm2_$(DEB_VERSION)-$(DEB_REVISION)_arm64.deb: out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_aarch64.deb + cp $< $@ + out/docker-machine-driver-kvm2_$(DEB_VERSION)-0_%.deb: out/docker-machine-driver-kvm2-% cp -r installers/linux/deb/kvm2_deb_template out/docker-machine-driver-kvm2_$(DEB_VERSION) chmod 0755 out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN - sed -E -i 's/--VERSION--/'$(DEB_VERSION)'/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control - sed -E -i 's/--ARCH--/'$*'/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control + sed -E -i -e 's/--VERSION--/$(DEB_VERSION)/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control + sed -E -i -e 's/--ARCH--/'$*'/g' out/docker-machine-driver-kvm2_$(DEB_VERSION)/DEBIAN/control mkdir -p out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin cp $< out/docker-machine-driver-kvm2_$(DEB_VERSION)/usr/bin/docker-machine-driver-kvm2 fakeroot dpkg-deb --build out/docker-machine-driver-kvm2_$(DEB_VERSION) $@ rm -rf out/docker-machine-driver-kvm2_$(DEB_VERSION) -out/docker-machine-driver-kvm2-$(RPM_VERSION).rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.deb +out/docker-machine-driver-kvm2-$(RPM_VERSION).rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm + cp $< $@ + +out/docker-machine-driver-kvm2_$(RPM_VERSION).amd64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.x86_64.rpm + cp $< $@ + +out/docker-machine-driver-kvm2_$(RPM_VERSION).arm64.rpm: out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.aarch64.rpm cp $< $@ out/docker-machine-driver-kvm2-$(RPM_VERSION)-0.%.rpm: out/docker-machine-driver-kvm2-% cp -r installers/linux/rpm/kvm2_rpm_template out/docker-machine-driver-kvm2-$(RPM_VERSION) - sed -E -i 's/--VERSION--/'$(RPM_VERSION)'/g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec - sed -E -i 's|--OUT--|'$(PWD)/out'|g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec + sed -E -i -e 's/--VERSION--/'$(RPM_VERSION)'/g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec + sed -E -i -e 's|--OUT--|'$(PWD)/out'|g' out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec rpmbuild -bb -D "_rpmdir $(PWD)/out" --target $* \ out/docker-machine-driver-kvm2-$(RPM_VERSION)/docker-machine-driver-kvm2.spec @mv out/$*/docker-machine-driver-kvm2-$(RPM_VERSION)-0.$*.rpm out/ && rmdir out/$* rm -rf out/docker-machine-driver-kvm2-$(RPM_VERSION) -.PHONY: kvm-image -kvm-image: installers/linux/kvm/Dockerfile ## Convenient alias to build the docker container - docker build --build-arg "GO_VERSION=$(KVM_GO_VERSION)" -t $(KVM_BUILD_IMAGE) -f $< $(dir $<) +.PHONY: kvm-image-amd64 +kvm-image-amd64: installers/linux/kvm/Dockerfile.amd64 ## Convenient alias to build the docker container + docker build --build-arg "GO_VERSION=$(KVM_GO_VERSION)" -t $(KVM_BUILD_IMAGE_AMD64) -f $< $(dir $<) + @echo "" + @echo "$(@) successfully built" + +.PHONY: kvm-image-arm64 +kvm-image-arm64: installers/linux/kvm/Dockerfile.arm64 ## Convenient alias to build the docker container + docker build --build-arg "GO_VERSION=$(KVM_GO_VERSION)" -t $(KVM_BUILD_IMAGE_ARM64) -f $< $(dir $<) @echo "" @echo "$(@) successfully built" kvm_in_docker: - docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE) || $(MAKE) kvm-image + docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64 rm -f out/docker-machine-driver-kvm2 - $(call DOCKER,$(KVM_BUILD_IMAGE),/usr/bin/make out/docker-machine-driver-kvm2 COMMIT=$(COMMIT)) + $(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make out/docker-machine-driver-kvm2 COMMIT=$(COMMIT)) .PHONY: install-kvm-driver install-kvm-driver: out/docker-machine-driver-kvm2 ## Install KVM Driver mkdir -p $(GOBIN) cp out/docker-machine-driver-kvm2 $(GOBIN)/docker-machine-driver-kvm2 -.PHONY: release-kvm-driver -release-kvm-driver: install-kvm-driver checksum ## Release KVM Driver - gsutil cp $(GOBIN)/docker-machine-driver-kvm2 gs://minikube/drivers/kvm/$(VERSION)/ - gsutil cp $(GOBIN)/docker-machine-driver-kvm2.sha256 gs://minikube/drivers/kvm/$(VERSION)/ + +out/docker-machine-driver-kvm2-arm64: +ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) + docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_ARM64) || $(MAKE) kvm-image-arm64 + $(call DOCKER,$(KVM_BUILD_IMAGE_ARM64),/usr/bin/make $@ COMMIT=$(COMMIT)) +else + $(if $(quiet),@echo " GO $@") + $(Q)GOARCH=arm64 \ + go build \ + -installsuffix "static" \ + -ldflags="$(KVM2_LDFLAGS)" \ + -tags "libvirt.1.3.1 without_lxc" \ + -o $@ \ + k8s.io/minikube/cmd/drivers/kvm +endif + chmod +X $@ + +out/docker-machine-driver-kvm2-%: +ifeq ($(MINIKUBE_BUILD_IN_DOCKER),y) + docker image inspect -f '{{.Id}} {{.RepoTags}}' $(KVM_BUILD_IMAGE_AMD64) || $(MAKE) kvm-image-amd64 + $(call DOCKER,$(KVM_BUILD_IMAGE_AMD64),/usr/bin/make $@ COMMIT=$(COMMIT)) + # make extra sure that we are linking with the older version of libvirt (1.3.1) + test "`strings $@ | grep '^LIBVIRT_[0-9]' | sort | tail -n 1`" = "LIBVIRT_1.2.9" +else + $(if $(quiet),@echo " GO $@") + $(Q)GOARCH=$* \ + go build \ + -installsuffix "static" \ + -ldflags="$(KVM2_LDFLAGS)" \ + -tags "libvirt.1.3.1 without_lxc" \ + -o $@ \ + k8s.io/minikube/cmd/drivers/kvm +endif + chmod +X $@ + site/themes/docsy/assets/vendor/bootstrap/package.js: ## update the website docsy theme git submodule git submodule update -f --init --recursive diff --git a/cmd/minikube/cmd/root.go b/cmd/minikube/cmd/root.go index 269b74752e39..e85688d8a90b 100644 --- a/cmd/minikube/cmd/root.go +++ b/cmd/minikube/cmd/root.go @@ -100,6 +100,7 @@ func Execute() { } _, callingCmd := filepath.Split(os.Args[0]) + callingCmd = strings.TrimSuffix(callingCmd, ".exe") if callingCmd == "kubectl" { // If the user is using the minikube binary as kubectl, allow them to specify the kubectl context without also specifying minikube profile diff --git a/cmd/minikube/cmd/start.go b/cmd/minikube/cmd/start.go index ed1ffff1fb50..c65d532d4272 100644 --- a/cmd/minikube/cmd/start.go +++ b/cmd/minikube/cmd/start.go @@ -32,7 +32,7 @@ import ( "strconv" "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine/ssh" "github.com/google/go-containerregistry/pkg/authn" "github.com/google/go-containerregistry/pkg/name" diff --git a/cmd/minikube/cmd/start_flags.go b/cmd/minikube/cmd/start_flags.go index ccf30226ca71..2152ca7a5831 100644 --- a/cmd/minikube/cmd/start_flags.go +++ b/cmd/minikube/cmd/start_flags.go @@ -21,7 +21,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "github.com/shirou/gopsutil/v3/cpu" "github.com/spf13/cobra" diff --git a/cmd/minikube/cmd/start_test.go b/cmd/minikube/cmd/start_test.go index 5d03d3d95cb7..398a3c2c8ea7 100644 --- a/cmd/minikube/cmd/start_test.go +++ b/cmd/minikube/cmd/start_test.go @@ -21,7 +21,7 @@ import ( "strings" "testing" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/spf13/cobra" "github.com/spf13/viper" diff --git a/cmd/minikube/main.go b/cmd/minikube/main.go index e29b9653adc4..496ec6e9fd13 100644 --- a/cmd/minikube/main.go +++ b/cmd/minikube/main.go @@ -28,6 +28,7 @@ import ( "path/filepath" "regexp" "strconv" + "strings" "github.com/spf13/pflag" "k8s.io/klog/v2" @@ -67,6 +68,7 @@ func main() { // Don't parse flags when running as kubectl _, callingCmd := filepath.Split(os.Args[0]) + callingCmd = strings.TrimSuffix(callingCmd, ".exe") parse := callingCmd != "kubectl" setFlags(parse) diff --git a/deploy/iso/minikube-iso/board/coreos/minikube/patches/go/1.15.13/dist-generate-stub-go.mod-in-workdir.patch b/deploy/iso/minikube-iso/board/coreos/minikube/patches/go/1.15.13/dist-generate-stub-go.mod-in-workdir.patch deleted file mode 100644 index 937028f379fe..000000000000 --- a/deploy/iso/minikube-iso/board/coreos/minikube/patches/go/1.15.13/dist-generate-stub-go.mod-in-workdir.patch +++ /dev/null @@ -1,78 +0,0 @@ -From 536d42e628595565b521dc534ace78d4816f4712 Mon Sep 17 00:00:00 2001 -From: Tamir Duberstein -Date: Thu, 25 Feb 2021 16:44:46 -0500 -Subject: [PATCH] dist: generate stub go.mod in workdir - -(cherry picked from commit c6374f516206c02b905d0d76ee1a66dab6fcd212) ---- - src/cmd/dist/build.go | 26 ++++++-------------------- - 1 file changed, 6 insertions(+), 20 deletions(-) - -diff --git a/src/cmd/dist/build.go b/src/cmd/dist/build.go -index 9e2b4f33b8..e5a7f9e9c4 100644 ---- a/src/cmd/dist/build.go -+++ b/src/cmd/dist/build.go -@@ -110,9 +110,6 @@ func xinit() { - fatalf("$GOROOT must be set") - } - goroot = filepath.Clean(b) -- if modRoot := findModuleRoot(goroot); modRoot != "" { -- fatalf("found go.mod file in %s: $GOROOT must not be inside a module", modRoot) -- } - - b = os.Getenv("GOROOT_FINAL") - if b == "" { -@@ -244,6 +241,9 @@ func xinit() { - os.Setenv("LANGUAGE", "en_US.UTF8") - - workdir = xworkdir() -+ if err := ioutil.WriteFile(pathf("%s/go.mod", workdir), []byte("module bootstrap"), 0666); err != nil { -+ fatalf("cannot write stub go.mod: %s", err) -+ } - xatexit(rmworkdir) - - tooldir = pathf("%s/pkg/tool/%s_%s", goroot, gohostos, gohostarch) -@@ -1484,11 +1484,11 @@ func goCmd(goBinary string, cmd string, args ...string) { - goCmd = append(goCmd, "-p=1") - } - -- run(goroot, ShowOutput|CheckExit, append(goCmd, args...)...) -+ run(workdir, ShowOutput|CheckExit, append(goCmd, args...)...) - } - - func checkNotStale(goBinary string, targets ...string) { -- out := run(goroot, CheckExit, -+ out := run(workdir, CheckExit, - append([]string{ - goBinary, - "list", "-gcflags=all=" + gogcflags, "-ldflags=all=" + goldflags, -@@ -1498,7 +1498,7 @@ func checkNotStale(goBinary string, targets ...string) { - os.Setenv("GODEBUG", "gocachehash=1") - for _, target := range []string{"runtime/internal/sys", "cmd/dist", "cmd/link"} { - if strings.Contains(out, "STALE "+target) { -- run(goroot, ShowOutput|CheckExit, goBinary, "list", "-f={{.ImportPath}} {{.Stale}}", target) -+ run(workdir, ShowOutput|CheckExit, goBinary, "list", "-f={{.ImportPath}} {{.Stale}}", target) - break - } - } -@@ -1590,20 +1590,6 @@ func checkCC() { - } - } - --func findModuleRoot(dir string) (root string) { -- for { -- if fi, err := os.Stat(filepath.Join(dir, "go.mod")); err == nil && !fi.IsDir() { -- return dir -- } -- d := filepath.Dir(dir) -- if d == dir { -- break -- } -- dir = d -- } -- return "" --} -- - func defaulttarg() string { - // xgetwd might return a path with symlinks fully resolved, and if - // there happens to be symlinks in goroot, then the hasprefix test diff --git a/deploy/iso/minikube-iso/configs/minikube_defconfig b/deploy/iso/minikube-iso/configs/minikube_defconfig index ff249d6fa1fc..dcae296ff5f9 100644 --- a/deploy/iso/minikube-iso/configs/minikube_defconfig +++ b/deploy/iso/minikube-iso/configs/minikube_defconfig @@ -18,12 +18,13 @@ BR2_ROOTFS_USERS_TABLES="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/use BR2_ROOTFS_OVERLAY="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/rootfs-overlay" BR2_LINUX_KERNEL=y BR2_LINUX_KERNEL_CUSTOM_VERSION=y -BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.194" +BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19.182" BR2_LINUX_KERNEL_USE_CUSTOM_CONFIG=y BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE="$(BR2_EXTERNAL_MINIKUBE_PATH)/board/coreos/minikube/linux_defconfig" BR2_LINUX_KERNEL_LZ4=y BR2_LINUX_KERNEL_NEEDS_HOST_LIBELF=y BR2_PACKAGE_GZIP=y +BR2_PACKAGE_LZ4=y BR2_PACKAGE_XZ=y BR2_PACKAGE_STRACE=y BR2_PACKAGE_SYSDIG=y @@ -36,9 +37,6 @@ BR2_PACKAGE_SSHFS=y BR2_PACKAGE_XFSPROGS=y BR2_PACKAGE_PARTED=y BR2_PACKAGE_SYSSTAT=y -BR2_PACKAGE_LUAJIT=y -BR2_PACKAGE_LZ4=y -BR2_PACKAGE_LZ4_PROGS=y BR2_PACKAGE_CA_CERTIFICATES=y BR2_PACKAGE_LIBOPENSSL_BIN=y BR2_PACKAGE_LIBCURL_CURL=y @@ -60,9 +58,7 @@ BR2_PACKAGE_PSMISC=y BR2_PACKAGE_SYSTEMD_LOGIND=y BR2_PACKAGE_SYSTEMD_MACHINED=y BR2_PACKAGE_TAR=y -BR2_PACKAGE_UTIL_LINUX_BINARIES=y BR2_PACKAGE_UTIL_LINUX_LOSETUP=y -BR2_PACKAGE_UTIL_LINUX_NOLOGIN=y BR2_PACKAGE_UTIL_LINUX_NSENTER=y BR2_PACKAGE_UTIL_LINUX_SCHEDUTILS=y BR2_TARGET_ROOTFS_CPIO_GZIP=y diff --git a/deploy/kicbase/Dockerfile b/deploy/kicbase/Dockerfile index 80f18be5e118..714c6ce23bde 100644 --- a/deploy/kicbase/Dockerfile +++ b/deploy/kicbase/Dockerfile @@ -36,7 +36,7 @@ COPY deploy/kicbase/10-network-security.conf /etc/sysctl.d/10-network-security.c COPY deploy/kicbase/11-tcp-mtu-probing.conf /etc/sysctl.d/11-tcp-mtu-probing.conf COPY deploy/kicbase/clean-install /usr/local/bin/clean-install COPY deploy/kicbase/entrypoint /usr/local/bin/entrypoint -COPY --from=0 /src/cmd/auto-pause /bin/auto-pause +COPY --from=0 /src/cmd/auto-pause/auto-pause /bin/auto-pause # Install dependencies, first from apt, then from release tarballs. # NOTE: we use one RUN to minimize layers. diff --git a/deploy/minikube/release_sanity_test.go b/deploy/minikube/release_sanity_test.go index 07eba31e8d74..9a09873e0239 100644 --- a/deploy/minikube/release_sanity_test.go +++ b/deploy/minikube/release_sanity_test.go @@ -48,7 +48,7 @@ func getSHAFromURL(url string) (string, error) { } func TestReleasesJSON(t *testing.T) { - releases, err := notify.GetAllVersionsFromURL(notify.GithubMinikubeReleasesURL) + releases, err := notify.AllVersionsFromURL(notify.GithubMinikubeReleasesURL) if err != nil { t.Fatalf("Error getting releases.json: %v", err) } diff --git a/deploy/minikube/releases-beta.json b/deploy/minikube/releases-beta.json index 8570f295c666..e46b6fbc0369 100644 --- a/deploy/minikube/releases-beta.json +++ b/deploy/minikube/releases-beta.json @@ -1,5 +1,13 @@ [ { + "name": "v1.22.0-beta.0", + "checksums": { + "darwin": "1ec06c37be5c6c79a7255da09ff83490a44d1e8cd2b2f45e4b489edfdeacde94", + "linux": "c9d9ac605a94748379188cced6b832037b8069441744b889214990c4ca3485a5", + "windows": "68fb9c24f0ea55b985856d0cce9fa0c288b8a4d7e13519d6f0790038165d7ef1" + } + }, + { "name": "v1.21.0-beta.0", "checksums": { "darwin": "69ab001eb4984d09ed731d5ac92afd8310e5c7672c2275b39d7a4c7e2dcfb4c6", diff --git a/go.mod b/go.mod index ba4612cecf7c..9159b9425553 100644 --- a/go.mod +++ b/go.mod @@ -5,16 +5,14 @@ go 1.16 require ( cloud.google.com/go/storage v1.15.0 contrib.go.opencensus.io/exporter/stackdriver v0.12.1 - github.com/Azure/azure-sdk-for-go v43.3.0+incompatible github.com/Delta456/box-cli-maker/v2 v2.2.1 github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/trace v0.16.0 - github.com/Microsoft/hcsshim v0.8.15 // indirect + github.com/Microsoft/hcsshim v0.8.17 // indirect github.com/Parallels/docker-machine-parallels/v2 v2.0.1 - github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21 - github.com/blang/semver v3.5.1+incompatible + github.com/VividCortex/godaemon v1.0.0 + github.com/blang/semver/v4 v4.0.0 github.com/briandowns/spinner v1.11.1 - github.com/c4milo/gotoolkit v0.0.0-20170318115440-bcc06269efa9 // indirect - github.com/cenkalti/backoff v2.2.1+incompatible + github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a // indirect github.com/cenkalti/backoff/v4 v4.1.1 github.com/cheggaaa/pb/v3 v3.0.8 github.com/cloudevents/sdk-go/v2 v2.3.1 @@ -24,15 +22,14 @@ require ( github.com/docker/docker v20.10.7+incompatible github.com/docker/go-units v0.4.0 github.com/docker/machine v0.16.2 - github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f - github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f // indirect + github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e github.com/golang-collections/collections v0.0.0-20130729185459-604e922904d3 github.com/google/go-cmp v0.5.6 github.com/google/go-containerregistry v0.4.1 - github.com/google/go-github v17.0.0+incompatible - github.com/google/go-github/v32 v32.1.0 - github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b + github.com/google/go-github/v36 v36.0.0 + github.com/google/slowjam v1.0.0 github.com/google/uuid v1.2.0 + github.com/gookit/color v1.4.2 // indirect github.com/hashicorp/go-getter v1.5.4 github.com/hashicorp/go-retryablehttp v0.7.0 github.com/hectane/go-acl v0.0.0-20190604041725-da78bae5fc95 // indirect @@ -55,6 +52,7 @@ require ( github.com/machine-drivers/docker-machine-driver-vmware v0.1.3 github.com/mattbaird/jsonpatch v0.0.0-20200820163806-098863c1fc24 github.com/mattn/go-isatty v0.0.13 + github.com/mattn/go-runewidth v0.0.13 // indirect github.com/mitchellh/go-ps v1.0.0 github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14 github.com/moby/sys/mount v0.2.0 // indirect @@ -72,7 +70,7 @@ require ( github.com/shirou/gopsutil/v3 v3.21.5 github.com/spf13/cobra v1.1.3 github.com/spf13/pflag v1.0.5 - github.com/spf13/viper v1.8.0 + github.com/spf13/viper v1.8.1 github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f github.com/zchee/go-vmnet v0.0.0-20161021174912-97ebf9174097 go.opencensus.io v0.23.0 @@ -80,16 +78,16 @@ require ( go.opentelemetry.io/otel/sdk v0.16.0 go.opentelemetry.io/otel/trace v0.17.0 golang.org/x/build v0.0.0-20190927031335-2835ba2e683f - golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 + golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 golang.org/x/exp v0.0.0-20210220032938-85be41e4509f golang.org/x/mod v0.4.2 - golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c + golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1 golang.org/x/sync v0.0.0-20210220032951-036812b2e83c - golang.org/x/sys v0.0.0-20210603125802-9665404d3644 + golang.org/x/sys v0.0.0-20210629170331-7dc0b73dc9fb golang.org/x/term v0.0.0-20210406210042-72f3dc4e9b72 golang.org/x/text v0.3.6 gonum.org/v1/plot v0.9.0 - google.golang.org/api v0.48.0 + google.golang.org/api v0.49.0 gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22 // indirect gopkg.in/yaml.v2 v2.4.0 k8s.io/api v0.21.2 diff --git a/go.sum b/go.sum index d13706b9f4e6..7dfc4df2224d 100644 --- a/go.sum +++ b/go.sum @@ -22,8 +22,9 @@ cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmW cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= -cloud.google.com/go v0.83.0 h1:bAMqZidYkmIsUqe6PtkEPT7Q+vfizScn+jfNA6jwK9c= cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0 h1:hVhK90DwCdOAYGME/FJd9vNIZye9HBR6Yy3fu4js3N8= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -52,8 +53,6 @@ dmitri.shuralyov.com/gpu/mtl v0.0.0-20201218220906-28db891af037/go.mod h1:H6x//7 gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8= github.com/Azure/azure-sdk-for-go v16.2.1+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/azure-sdk-for-go v43.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= -github.com/Azure/azure-sdk-for-go v43.3.0+incompatible h1:o0G4JAsOzeVJEwU0Ud9bh+lUHPUc0GkFENJ02dk51Uo= -github.com/Azure/azure-sdk-for-go v43.3.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v10.8.1+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= @@ -82,17 +81,22 @@ github.com/Microsoft/go-winio v0.4.15-0.20190919025122-fc70bd9a86b5/go.mod h1:tT github.com/Microsoft/go-winio v0.4.15/go.mod h1:tTuCMEN+UleMWgg9dVx4Hu52b1bJo+59jBh3ajtinzw= github.com/Microsoft/go-winio v0.4.16-0.20201130162521-d1ffc52c7331/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= github.com/Microsoft/go-winio v0.4.16/go.mod h1:XB6nPKklQyQ7GC9LdcBEcBl8PF76WugXOPRXwdLnMv0= -github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3 h1:mw6pDQqv38/WGF1cO/jF5t/jyAJ2yi7CmtFLLO5tGFI= github.com/Microsoft/go-winio v0.4.17-0.20210211115548-6eac466e5fa3/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17-0.20210324224401-5516f17a5958/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= +github.com/Microsoft/go-winio v0.4.17 h1:iT12IBVClFevaf8PuVyi3UmZOVh4OqnaLxDTW2O6j3w= +github.com/Microsoft/go-winio v0.4.17/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/hcsshim v0.8.6/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7-0.20190325164909-8abdbb8205e4/go.mod h1:Op3hHsoHPAvb6lceZHDtd9OkTew38wNoXnJs8iY7rUg= github.com/Microsoft/hcsshim v0.8.7/go.mod h1:OHd7sQqRFrYd3RmSgbgji+ctCwkbq2wbEYNSzOYtcBQ= github.com/Microsoft/hcsshim v0.8.9/go.mod h1:5692vkUqntj1idxauYlpoINNKeqCiG6Sg38RRsjT5y8= github.com/Microsoft/hcsshim v0.8.10-0.20200715222032-5eafd1556990/go.mod h1:ay/0dTb7NsG8QMDfsRfLHgZo/6xAJShLe1+ePPflihk= github.com/Microsoft/hcsshim v0.8.14/go.mod h1:NtVKoYxQuTLx6gEq0L96c9Ju4JbRJ4nY2ow3VK6a9Lg= -github.com/Microsoft/hcsshim v0.8.15 h1:Aof83YILRs2Vx3GhHqlvvfyx1asRJKMFIMeVlHsZKtI= github.com/Microsoft/hcsshim v0.8.15/go.mod h1:x38A4YbHbdxJtc0sF6oIz+RG0npwSCAvn69iY6URG00= +github.com/Microsoft/hcsshim v0.8.16/go.mod h1:o5/SZqmR7x9JNKsW3pu+nqHm0MF8vbA+VxGOoXdC600= +github.com/Microsoft/hcsshim v0.8.17 h1:yFHH5bghP9ij5Y34PPaMOE8g//oXZ0uJQeMENVo2zcI= +github.com/Microsoft/hcsshim v0.8.17/go.mod h1:+w2gRZ5ReXQhFOrvSQeNfhrYB/dg3oDwTOcER2fw4I4= github.com/Microsoft/hcsshim/test v0.0.0-20201218223536-d3e5debf77da/go.mod h1:5hlzMzRKMLyo42nCZ9oml8AdTlq/0cvIaBv6tK1RehU= +github.com/Microsoft/hcsshim/test v0.0.0-20210227013316-43a75bb4edd3/go.mod h1:mw7qgWloBUl75W/gVH3cQszUg1+gUITj7D6NY7ywVnY= github.com/NYTimes/gziphandler v0.0.0-20170623195520-56545f4a5d46/go.mod h1:3wb06e3pkSAbeQ52E9H9iFoQsEEwGN64994WTCIhntQ= github.com/NYTimes/gziphandler v1.1.1/go.mod h1:n/CVRwUEOgIxrgPvAQhUUr9oeUtvrhMomdKFjzJNB0c= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= @@ -106,8 +110,8 @@ github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d h1:G0m3OIz70MZUW github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d/go.mod h1:3eOhrUMpNV+6aFIbp5/iudMxNCF27Vw2OZgy4xEx0Fg= github.com/VividCortex/ewma v1.1.1 h1:MnEK4VOv6n0RSY4vtRe3h11qjxL3+t0B8yOL8iMXdcM= github.com/VividCortex/ewma v1.1.1/go.mod h1:2Tkkvm3sRDVXaiyucHiACn4cqf7DpdyLvmxzcbUokwA= -github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21 h1:Pgxfz/g+XyfRjYqRjKUFpDh5IciFncmA/Uio6AU/z9g= -github.com/VividCortex/godaemon v0.0.0-20201030160542-15e3f4925a21/go.mod h1:Y8CJ3IwPIAkMhv/rRUWIlczaeqd9ty9yrl+nc2AbaL4= +github.com/VividCortex/godaemon v1.0.0 h1:aHYrScWvgaSOdAoYCdObWXLm+e1rldP9Pwb1ZvuZkQw= +github.com/VividCortex/godaemon v1.0.0/go.mod h1:hBWe/72KbGt/lb95E+Sh9ersdYbB57Dt6CG66S1YPno= github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321165649-761f6f9626b1 h1:AI8EIk8occ3pruhaTpkaQxQGlC1dHx3J9hAtg7t+FLI= github.com/afbjorklund/go-containerregistry v0.4.1-0.20210321165649-761f6f9626b1/go.mod h1:Ct15B4yir3PLOP5jsy0GNeYVaIZs/MK/Jz5any1wFW0= github.com/agnivade/levenshtein v1.0.1/go.mod h1:CURSv5d9Uaml+FovSIICkLbAUZ9S4RqaHDIsdSBg7lM= @@ -152,6 +156,8 @@ github.com/blang/semver v3.1.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnweb github.com/blang/semver v3.5.0+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdnnjpJbkM4JQ= github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= +github.com/blang/semver/v4 v4.0.0 h1:1PFHFE6yCCTv8C1TeyNNarDzntLi7wMI5i/pzqYIsAM= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps= github.com/boombuler/barcode v1.0.0/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= @@ -161,12 +167,11 @@ github.com/buger/jsonparser v0.0.0-20180808090653-f4dd9f5a6b44/go.mod h1:bbYlZJ7 github.com/bugsnag/bugsnag-go v0.0.0-20141110184014-b1d153021fcd/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8= github.com/bugsnag/osext v0.0.0-20130617224835-0dd3f918b21b/go.mod h1:obH5gd0BsqsP2LwDJ9aOkm/6J86V6lyAXCoQWGw3K50= github.com/bugsnag/panicwrap v0.0.0-20151223152923-e2c28503fcd0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE= -github.com/c4milo/gotoolkit v0.0.0-20170318115440-bcc06269efa9 h1:+ziP/wVJWuAORkjv7386TRidVKY57X0bXBZFMeFlW+U= -github.com/c4milo/gotoolkit v0.0.0-20170318115440-bcc06269efa9/go.mod h1:txokOny9wavBtq2PWuHmj1P+eFwpCsj+gQeNNANChfU= +github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a h1:+uvtaGSLJh0YpLLHCQ9F+UVGy4UOS542hsjj8wBjvH0= +github.com/c4milo/gotoolkit v0.0.0-20190525173301-67483a18c17a/go.mod h1:txokOny9wavBtq2PWuHmj1P+eFwpCsj+gQeNNANChfU= github.com/caddyserver/caddy v1.0.3/go.mod h1:G+ouvOY32gENkJC+jhgl62TyhvqEsFaDiZ4uw0RzP1E= +github.com/cenkalti/backoff v2.1.1+incompatible h1:tKJnvO2kl0zmb/jA5UKAt4VoEVw1qxKWjE/Bpp46npY= github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= -github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= -github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= github.com/census-instrumentation/opencensus-proto v0.2.0/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= @@ -190,6 +195,7 @@ github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMn github.com/cilium/ebpf v0.0.0-20200110133405-4032b1d8aae3/go.mod h1:MA5e5Lr8slmEg9bt0VpxxWqJlO4iwu3FBdHUzV7wQVg= github.com/cilium/ebpf v0.0.0-20200702112145-1c8d4c9ef775/go.mod h1:7cR51M8ViRLIdUjrmSXlK9pkrsDlLHbO8jiB8X8JnOc= github.com/cilium/ebpf v0.2.0/go.mod h1:To2CFviqOWL/M0gIMsvSMlqe7em/l1ALkX1PyjrX2Qs= +github.com/cilium/ebpf v0.4.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/cilium/ebpf v0.5.0/go.mod h1:4tRaxcgiL706VnOzHOdBlY8IEAIdxINsQBcU4xJJXRs= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudevents/sdk-go/v2 v2.3.1 h1:QRTu0yRA4FbznjRSds0/4Hy6cVYpWV2wInlNJSHWAtw= @@ -205,13 +211,20 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/cockroachdb/datadriven v0.0.0-20190809214429-80d97fb3cbaa/go.mod h1:zn76sxSg3SzpJ0PPJaLDCu+Bu0Lg3sKTORVIj19EIF8= github.com/container-storage-interface/spec v1.3.0/go.mod h1:6URME8mwIBbpVyZV93Ce5St17xBiQJQY67NDsuohiy4= github.com/containerd/aufs v0.0.0-20200908144142-dab0cbea06f4/go.mod h1:nukgQABAEopAHvB6j7cnP5zJ+/3aVcE7hCYqvIwAHyE= +github.com/containerd/aufs v0.0.0-20201003224125-76a6863f2989/go.mod h1:AkGGQs9NM2vtYHaUen+NljV0/baGCAPELGm2q9ZXpWU= +github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= github.com/containerd/btrfs v0.0.0-20201111183144-404b9149801e/go.mod h1:jg2QkJcsabfHugurUvvPhS3E08Oxiuh5W/g1ybB4e0E= +github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= +github.com/containerd/btrfs v1.0.0/go.mod h1:zMcX3qkXTAi9GI50+0HOeuV8LU2ryCE/V2vG/ZBiTss= github.com/containerd/cgroups v0.0.0-20190717030353-c4b9ac5c7601/go.mod h1:X9rLEHIqSf/wfK8NsPqxJmeZgW4pcfzdXITDrUSJ6uI= github.com/containerd/cgroups v0.0.0-20190919134610-bf292b21730f/go.mod h1:OApqhQ4XNSNC13gXIwDjhOQxjWa/NxkwZXJ1EvqT0ko= github.com/containerd/cgroups v0.0.0-20200531161412-0dbf7f05ba59/go.mod h1:pA0z1pT8KYB3TCXK/ocprsh7MAkoW8bZVzPdih9snmM= github.com/containerd/cgroups v0.0.0-20200710171044-318312a37340/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= -github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102 h1:Qf4HiqfvmB7zS6scsmNgTLmByHbq8n9RTF39v+TzP7A= github.com/containerd/cgroups v0.0.0-20200824123100-0b889c03f102/go.mod h1:s5q4SojHctfxANBDvMeIaIovkq29IP48TKAxnhYRxvo= +github.com/containerd/cgroups v0.0.0-20210114181951-8a68de567b68/go.mod h1:ZJeTFisyysqgcCdecO57Dj79RfL0LNeGiFUqLYQRYLE= +github.com/containerd/cgroups v1.0.1 h1:iJnMvco9XGvKUvNQkv88bE4uJXxRQH18efbKo9w5vHQ= +github.com/containerd/cgroups v1.0.1/go.mod h1:0SJrPIenamHDcZhEcJMNBB85rHcUsw4f25ZfBiPYRkU= github.com/containerd/console v0.0.0-20180822173158-c12b1e7919c1/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20181022165439-0650fd9eeb50/go.mod h1:Tj/on1eG8kiEhd0+fhSDzsPAFESxzBBvdyEgyryXffw= github.com/containerd/console v0.0.0-20191206165004-02ecf6a7291e/go.mod h1:8Pf4gM6VEbTNRIT26AyyU7hxdQU3MvAvxVI0sc00XBE= @@ -223,25 +236,43 @@ github.com/containerd/containerd v1.3.0/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMX github.com/containerd/containerd v1.3.1-0.20191213020239-082f7e3aed57/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.3.2/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.0-beta.2.0.20200729163537-40b22ef07410/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.1/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= +github.com/containerd/containerd v1.4.3/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= github.com/containerd/containerd v1.4.4/go.mod h1:bC6axHOhabU15QhwfG7w5PipXdVtMXFTttgp+kVtyUA= -github.com/containerd/containerd v1.5.0-beta.1 h1:IK6yirB4X7wpKyFSikWiT++nZsyIxGAAgNEv3fEGuls= github.com/containerd/containerd v1.5.0-beta.1/go.mod h1:5HfvG1V2FsKesEGQ17k5/T7V960Tmcumvqn8Mc+pCYQ= +github.com/containerd/containerd v1.5.0-beta.3/go.mod h1:/wr9AVtEM7x9c+n0+stptlo/uBBoBORwEx6ardVcmKU= +github.com/containerd/containerd v1.5.0-beta.4/go.mod h1:GmdgZd2zA2GYIBZ0w09ZvgqEq8EfBp/m3lcVZIvPHhI= +github.com/containerd/containerd v1.5.0-rc.0/go.mod h1:V/IXoMqNGgBlabz3tHD2TWDoTJseu1FGOKuoA4nNb2s= +github.com/containerd/containerd v1.5.1 h1:xWHPAoe6VkUiI9GAvndJM7s/0MTrmwX3AQiYTr3olf0= +github.com/containerd/containerd v1.5.1/go.mod h1:0DOxVqwDy2iZvrZp2JUx/E+hS0UNTVn7dJnIOwtYR4g= github.com/containerd/continuity v0.0.0-20190426062206-aaeac12a7ffc/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20190815185530-f2a389ac0a02/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20191127005431-f65d91d395eb/go.mod h1:GL3xCUCBDV3CZiTSEKksMWbLE66hEyuu9qyDOOqM47Y= github.com/containerd/continuity v0.0.0-20200710164510-efbc4488d8fe/go.mod h1:cECdGN1O8G9bgKTlLhuPJimka6Xb/Gg7vYzCTNVxhvo= -github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7 h1:6ejg6Lkk8dskcM7wQ28gONkukbQkM4qpj4RnYbpFzrI= github.com/containerd/continuity v0.0.0-20201208142359-180525291bb7/go.mod h1:kR3BEg7bDFaEddKm54WSmrol1fKWDU1nKYkgrcgZT7Y= +github.com/containerd/continuity v0.0.0-20210208174643-50096c924a4e/go.mod h1:EXlVlkqNba9rJe3j7w3Xa924itAMLgZH4UD/Q4PExuQ= +github.com/containerd/continuity v0.1.0 h1:UFRRY5JemiAhPZrr/uE0n8fMTLcZsUvySPr1+D7pgr8= +github.com/containerd/continuity v0.1.0/go.mod h1:ICJu0PwR54nI0yPEnJ6jcS+J7CZAUXrLh8lPo2knzsM= github.com/containerd/fifo v0.0.0-20180307165137-3d5202aec260/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20190226154929-a9fb20d87448/go.mod h1:ODA38xgv3Kuk8dQz2ZQXpnv/UZZUHUCL7pnLehbXgQI= github.com/containerd/fifo v0.0.0-20200410184934-f15a3290365b/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= github.com/containerd/fifo v0.0.0-20201026212402-0724c46b320c/go.mod h1:jPQ2IAeZRCYxpS/Cm1495vGFww6ecHmMk1YJH2Q5ln0= +github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= +github.com/containerd/fifo v1.0.0/go.mod h1:ocF/ME1SX5b1AOlWi9r677YJmCPSwwWnQ9O123vzpE4= github.com/containerd/go-cni v1.0.1/go.mod h1:+vUpYxKvAF72G9i1WoDOiPGRtQpqsNW/ZHtSlv++smU= +github.com/containerd/go-cni v1.0.2/go.mod h1:nrNABBHzu0ZwCug9Ije8hL2xBCYh/pjfMb1aZGrrohk= github.com/containerd/go-runc v0.0.0-20180907222934-5a6d9f37cfa3/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/go-runc v0.0.0-20190911050354-e029b79d8cda/go.mod h1:IV7qH3hrUgRmyYrtgEeGWJfWbgcHL9CSRruz2Vqcph0= github.com/containerd/go-runc v0.0.0-20200220073739-7016d3ce2328/go.mod h1:PpyHrqVs8FTi9vpyHwPwiNEGaACDxT/N/pLcvMSRA9g= +github.com/containerd/go-runc v0.0.0-20201020171139-16b287bc67d0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= github.com/containerd/imgcrypt v1.0.1/go.mod h1:mdd8cEPW7TPgNG4FpuP3sGBiQ7Yi/zak9TYCG3juvb0= +github.com/containerd/imgcrypt v1.0.4-0.20210301171431-0ae5c75f59ba/go.mod h1:6TNsg0ctmizkrOgXRNQjAPFWpMYRWuiB6dSF4Pfa5SA= +github.com/containerd/imgcrypt v1.1.1-0.20210312161619-7ed62a527887/go.mod h1:5AZJNI6sLHJljKuI9IHnw1pWqo/F0nGDOuR9zgTs7ow= +github.com/containerd/imgcrypt v1.1.1/go.mod h1:xpLnwiQmEUJPvQoAapeb2SNCxz7Xr6PJrXQb0Dpc4ms= github.com/containerd/nri v0.0.0-20201007170849-eb1350a75164/go.mod h1:+2wGSDGFYfE5+So4M5syatU0N0f0LbWpuqyMi4/BE8c= +github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= +github.com/containerd/nri v0.1.0/go.mod h1:lmxnXF6oMkbqs39FiCt1s0R2HSMhcLel9vNL3m4AaeY= github.com/containerd/stargz-snapshotter/estargz v0.4.1 h1:5e7heayhB7CcgdTkqfZqrNaNv15gABwr3Q2jBTbLlt4= github.com/containerd/stargz-snapshotter/estargz v0.4.1/go.mod h1:x7Q9dg9QYb4+ELgxmo4gBUeJB0tl5dqH1Sdz0nJU1QM= github.com/containerd/ttrpc v0.0.0-20190828154514-0e0f228740de/go.mod h1:PvCDdDGpgqzQIzDW1TphrGLssLDZp2GuS+X5DkEJB8o= @@ -252,16 +283,26 @@ github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8h github.com/containerd/typeurl v0.0.0-20180627222232-a93fcdb778cd/go.mod h1:Cm3kwCdlkCfMSHURc+r6fwoGH6/F1hH3S4sg0rLFWPc= github.com/containerd/typeurl v0.0.0-20190911142611-5eb25027c9fd/go.mod h1:GeKYzf2pQcqv7tJ0AoCuuhtnqhva5LNU3U+OyKxxJpk= github.com/containerd/typeurl v1.0.1/go.mod h1:TB1hUtrpaiO88KEK56ijojHS1+NeF0izUACaJW2mdXg= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= github.com/containerd/zfs v0.0.0-20200918131355-0a33824f23a2/go.mod h1:8IgZOBdv8fAgXddBT4dBXJPtxyRsejFIpXoklgxgEjw= +github.com/containerd/zfs v0.0.0-20210301145711-11e8f1707f62/go.mod h1:A9zfAbMlQwE+/is6hi0Xw8ktpL+6glmqZYtevJgaB8Y= +github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v0.0.0-20210324211415-d5c4544f0433/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= github.com/containernetworking/cni v0.7.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/containernetworking/cni v0.8.0/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= +github.com/containernetworking/cni v0.8.1/go.mod h1:LGwApLUm2FpoOfxTDEeq8T9ipbpZ61X79hmU3w8FmsY= github.com/containernetworking/plugins v0.8.6/go.mod h1:qnw5mN19D8fIwkqW7oHHYDHVlzhJpcY6TQxn/fUyDDM= +github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRDjeJr6FLK6vuiUwoH7P8= github.com/containers/ocicrypt v1.0.1/go.mod h1:MeJDzk1RJHv89LjsH0Sp5KTY3ZYkjXO/C+bKAeWFIrc= +github.com/containers/ocicrypt v1.1.0/go.mod h1:b8AOe0YR67uU8OqfVNcznfFpAzu3rdgUV4GP9qXPfu4= +github.com/containers/ocicrypt v1.1.1/go.mod h1:Dm55fwWm1YZAjYRaJ94z2mfZikIyIN4B0oB3dj3jFxY= github.com/coredns/corefile-migration v1.0.11/go.mod h1:RMy/mXdeDlYwzt0vdMEJvT2hGJ2I86/eO0UdXmH9XNI= github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= github.com/coreos/go-iptables v0.4.5/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= +github.com/coreos/go-iptables v0.5.0/go.mod h1:/mVI274lEDI2ns62jHCDnCyBF9Iwsmekav8Dbxlm1MU= github.com/coreos/go-oidc v2.1.0+incompatible/go.mod h1:CgnwVTmzoESiwO9qyAFEMiHoZ1nMCKZlZ9V6mm3/LKc= github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= @@ -325,10 +366,10 @@ github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3 github.com/dustin/go-humanize v0.0.0-20171111073723-bb3d318650d4/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= github.com/elazarl/goproxy v0.0.0-20180725130230-947c36da3153/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f h1:8GDPb0tCY8LQ+OJ3dbHb5sA6YZWXFORQYZx5sdsTlMs= -github.com/elazarl/goproxy v0.0.0-20190421051319-9d40249d3c2f/go.mod h1:/Zj4wYkgs4iZTTu3o/KG3Itv/qCCa8VVMlb3i9OVuzc= -github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f h1:AUj1VoZUfhPhOPHULCQQDnGhRelpFWHMLhQVWDsS0v4= -github.com/elazarl/goproxy/ext v0.0.0-20190421051319-9d40249d3c2f/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= +github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e h1:/cwV7t2xezilMljIftb7WlFtzGANRCnoOhPjtl2ifcs= +github.com/elazarl/goproxy v0.0.0-20210110162100-a92cc753f88e/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM= +github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2 h1:dWB6v3RcOy03t/bUadywsbyrQwCqZeNIEX6M1OtSZOM= +github.com/elazarl/goproxy/ext v0.0.0-20190711103511-473e67f1d7d2/go.mod h1:gNh8nYJoAm43RfaxurUnxr+N1PwuFV3ZMl/efxlIlY8= github.com/emicklei/go-restful v0.0.0-20170410110728-ff4f55a20633/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/emicklei/go-restful v2.9.5+incompatible/go.mod h1:otzb+WCGbkyDHkqmQmT5YD2WR4BBwUdeQoFo8l/7tVs= github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= @@ -503,8 +544,8 @@ github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= -github.com/google/go-github/v32 v32.1.0 h1:GWkQOdXqviCPx7Q7Fj+KyPoGm4SwHRh8rheoPhd27II= -github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI= +github.com/google/go-github/v36 v36.0.0 h1:ndCzM616/oijwufI7nBRa+5eZHLldT+4yIB68ib5ogs= +github.com/google/go-github/v36 v36.0.0/go.mod h1:LFlKC047IOqiglRGNqNb9s/iAPTnnjtlshm+bxp+kwk= github.com/google/go-querystring v1.0.0 h1:Xkwi/a1rcvNg1PPYe5vI8GbeBY/jrVuDX5ASuANWTrk= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= @@ -530,8 +571,8 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= -github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b h1:x3aElhKtGmXLo6RI2FJSBaPBT0acmn2LFfKVP1CqH8o= -github.com/google/slowjam v0.0.0-20200530021616-df27e642fe7b/go.mod h1:i4b4iDjZbKPkbD7z9Ycy4gtcALPoh8E9O3+wvtw7IB0= +github.com/google/slowjam v1.0.0 h1:dA9flW4oGTJcSy8FpEvdq8JKwPFVgqYwMmjhqlb2L+s= +github.com/google/slowjam v1.0.0/go.mod h1:mNktULbvWfYVMKKmpt94Rp3jMtmhQZLS0iR+W84S0mM= github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -544,8 +585,9 @@ github.com/googleapis/gnostic v0.4.1 h1:DLJCy1n/vrD4HPjOvYcT8aYQXpPIzoRZONaYwyyc github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3 h1:eHv/jVY/JNop1xg2J9cBb4EzyMpWZoNCP1BslSAIkOI= github.com/googleinterns/cloud-operations-api-mock v0.0.0-20200709193332-a1e58c29bdd3/go.mod h1:h/KNeRx7oYU4SpA4SoY7W2/NxDKEEVuwA6j9A27L4OI= -github.com/gookit/color v1.3.6 h1:Rgbazd4JO5AgSTVGS3o0nvaSdwdrS8bzvIXwtK6OiMk= github.com/gookit/color v1.3.6/go.mod h1:R3ogXq2B9rTbXoSHJ1HyUVAZ3poOJHpd9nQmyGZsfvQ= +github.com/gookit/color v1.4.2 h1:tXy44JFSFkKnELV6WaMo/lLfu/meqITX3iAV52do7lk= +github.com/gookit/color v1.4.2/go.mod h1:fqRyamkC1W8uxl+lxCQxOT09l/vYfZ+QeiX3rKQHCoQ= github.com/gophercloud/gophercloud v0.1.0/go.mod h1:vxM41WHh5uqHVBMZHzuwNOHh8XEoIEcSTewFxm1c5g8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= @@ -611,14 +653,14 @@ github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214 h1:WgfvpuKg42WVLkx github.com/hooklift/assert v0.0.0-20170704181755-9d1defd6d214/go.mod h1:kj6hFWqfwSjFjLnYW5PK1DoxZ4O0uapwHRmd9jhln4E= github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8 h1:ARl0RuGZTqBOMXQIfXen0twVSJ8kMojd7ThJf4EBcrc= github.com/hooklift/iso9660 v0.0.0-20170318115843-1cf07e5970d8/go.mod h1:sOC47ru8lB0DlU0EZ7BJ0KCP5rDqOvx0c/5K5ADm8H0= -github.com/hpcloud/tail v1.0.0 h1:nfCOvKYfkgYP8hkirhJocXT2+zOD8yUNjXaWfTlyFKI= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/imdario/mergo v0.3.5/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= github.com/imdario/mergo v0.3.8/go.mod h1:2EnlNZ0deacrJVfApfmtdGgDfMuh/nq6Ok1EcJh5FfA= -github.com/imdario/mergo v0.3.10 h1:6q5mVkdH/vYmqngx7kZQTjJ5HRsx+ImorDIEQ+beJgc= github.com/imdario/mergo v0.3.10/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.11 h1:3tnifQM4i+fbajXKBHXWEH+KvNHqojZ778UH75j3bGA= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/inconshreveable/mousetrap v1.0.0 h1:Z8tu5sraLXCXIcARxBp/8cbvlwVa7Z1NHg9XEKhtSvM= github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= github.com/intel-go/cpuid v0.0.0-20181003105527-1a4a6f06a1c6 h1:XboatR7lasl05yel5hNXF7kQBw2oFUGdMztcgisfhNU= @@ -678,8 +720,9 @@ github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQL github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/compress v1.11.2/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= -github.com/klauspost/compress v1.11.3 h1:dB4Bn0tN3wdCzQxnS8r06kV74qN/TAfaIS0bVE8h3jc= github.com/klauspost/compress v1.11.3/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= +github.com/klauspost/compress v1.11.13 h1:eSvu8Tmq6j2psUJqJrLcWH6K3w5Dwc+qipbaA6eVEN4= +github.com/klauspost/compress v1.11.13/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs= github.com/klauspost/cpuid v1.2.0 h1:NMpwD2G9JSFOE1/TJjGSo5zG7Yb2bTe7eq1jH+irmeE= github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= @@ -744,8 +787,9 @@ github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzp github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-runewidth v0.0.7/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= -github.com/mattn/go-runewidth v0.0.12 h1:Y41i/hVW3Pgwr8gV+J23B9YEY0zxjptBuCWEaxmAOow= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.13 h1:lTGmDsbAYt5DmK6OnoV7EuIF1wEIFAcxld6ypU4OSgU= +github.com/mattn/go-runewidth v0.0.13/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/mattn/go-shellwords v1.0.3/go.mod h1:3xCvwCdWdlDJUrvuMn7Wuy9eWs4pE8vqg+NOMyg4B2o= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 h1:I0XW9+e1XWDxdcEniV4rQAIOPUGDq67JSCiRCgGCZLI= @@ -758,6 +802,7 @@ github.com/miekg/dns v1.1.3/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nr github.com/miekg/dns v1.1.29/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= github.com/miekg/dns v1.1.35 h1:oTfOaDH+mZkdcgdIjH6yBajRGtIwcwcaR+rt23ZSrJs= github.com/miekg/dns v1.1.35/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM= +github.com/miekg/pkcs11 v1.0.3/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/mindprince/gonvml v0.0.0-20190828220739-9ebdce4bb989/go.mod h1:2eu9pRWp8mo84xCg6KswZ+USQHjwgRhNp06sozOdsTY= github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= @@ -780,6 +825,7 @@ github.com/mitchellh/osext v0.0.0-20151018003038-5e2d6d41470f/go.mod h1:OkQIRizQ github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14 h1:XGy4iMfaG4r1uZKZQmEPSYSH0Nj5JJuKgPNUhWGQ08E= github.com/moby/hyperkit v0.0.0-20210108224842-2f061e447e14/go.mod h1:aBcAEoy5u01cPAYvosR85gzSrMZ0TVVnkPytOQN+9z8= github.com/moby/ipvs v1.0.1/go.mod h1:2pngiyseZbIKXNv7hsKj3O9UEz30c53MT9005gt2hxQ= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/spdystream v0.2.0 h1:cjW1zVyyoiM0T7b6UoySUFqzXMoqRckQtXwGPiBhOM8= github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= github.com/moby/sys/mount v0.2.0 h1:WhCW5B355jtxndN5ovugJlMFJawbUODuW8fSnEH6SSM= @@ -810,6 +856,8 @@ github.com/naoina/go-stringutil v0.1.0/go.mod h1:XJ2SJL9jCtBh+P9q5btrd/Ylo8XwT/h github.com/naoina/toml v0.1.1/go.mod h1:NBIhNtsFMo3G2szEBne+bO4gS192HuIYRqfvOWb4i1E= github.com/ncw/swift v1.0.47/go.mod h1:23YIA4yWVnGwv2dQlN4bB7egfYX6YLn0Yo/S6zZO/ZM= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U= github.com/olekukonko/tablewriter v0.0.0-20170122224234-a0225b3f23b5/go.mod h1:vsDQFd/mU46D+Z4whnwzcISnGGzXWMclvtLoiIKAKIo= github.com/olekukonko/tablewriter v0.0.4/go.mod h1:zq6QwlOf5SlnkVbMSr5EoBv3636FWnp+qbPhuoO21uA= @@ -823,15 +871,17 @@ github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+ github.com/onsi/ginkgo v1.10.2/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.10.3/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.11.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= -github.com/onsi/ginkgo v1.12.0 h1:Iw5WCbBcaAAd0fpRb1c9r5YCylv4XDoCSigm1zLevwU= github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg= +github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ= +github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/gomega v0.0.0-20151007035656-2152b45fa28a/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v0.0.0-20170829124025-dcabb60a477c/go.mod h1:C1qb7wdrVGGVU+Z6iS04AVkA3Q65CEZX59MT0QO5uiA= github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= -github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg= github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA= +github.com/onsi/gomega v1.10.3 h1:gph6h/qe9GSUw1NhH1gp+qb+h8rXD8Cy60Z32Qw3ELA= +github.com/onsi/gomega v1.10.3/go.mod h1:V9xEwhxec5O8UDM77eCW8vLymOMltsqPVYWrpDsH8xc= github.com/opencontainers/go-digest v0.0.0-20170106003457-a6d0ee40d420/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v0.0.0-20180430190053-c9281466c8b2/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= @@ -869,6 +919,7 @@ github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtP github.com/pborman/uuid v1.2.1 h1:+ZZIw58t/ozdjRaXh/3awHfmWRbzYxJoAdNJxe/3pvw= github.com/pborman/uuid v1.2.1/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= +github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc= github.com/pelletier/go-toml v1.9.3 h1:zeC5b1GviRUyKYd6OJPvBU/mcVDVoL1OhT17FCt5dSQ= github.com/pelletier/go-toml v1.9.3/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= @@ -922,8 +973,9 @@ github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa github.com/prometheus/procfs v0.0.5/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.2.0 h1:wH4vA7pcjKuZzjF7lM8awk4fnuJO6idemZXoKnULUx4= github.com/prometheus/procfs v0.2.0/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0 h1:mxy4L2jP6qMonqmq+aTtOx1ifVWUgG/TAmntgbh3xv4= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= github.com/quobyte/api v0.1.8/go.mod h1:jL7lIHrmqQ7yh05OJ+eEEdHr0u/kmT1Ff9iHd+4H6VI= github.com/remyoudompheng/bigfft v0.0.0-20170806203942-52369c62f446/go.mod h1:uYEyJGbgTkfkS4+E/PavXkNJcbFIpEtjt2B0KDQ5+9M= @@ -997,8 +1049,9 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.4.0/go.mod h1:PTJ7Z/lr49W6bUbkmS1V3by4uWynFiR9p7+dSq/yZzE= github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg= -github.com/spf13/viper v1.8.0 h1:QRwDgoG8xX+kp69di68D+YYTCWfYEckbZRfUlEIAal0= -github.com/spf13/viper v1.8.0/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/spf13/viper v1.8.1 h1:Kq1fyeebqsBfbjZj4EL7gj2IO0mMaiyjYUWcUsl2O44= +github.com/spf13/viper v1.8.1/go.mod h1:o0Pch8wJ9BVSWGQMbra6iw0oQ5oktSIBaujf1rJH9Ns= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= github.com/storageos/go-api v2.2.0+incompatible/go.mod h1:ZrLn+e0ZuF3Y65PNF6dIwbJPZqfmtCXxFm9ckv0agOY= github.com/stretchr/objx v0.0.0-20180129172003-8a3f7159479f/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1041,6 +1094,7 @@ github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyC github.com/vektah/gqlparser v1.1.2/go.mod h1:1ycwN7Ij5njmMkPPAOaRFY4rET2Enx7IkVv3vaXspKw= github.com/vishvananda/netlink v0.0.0-20181108222139-023a6dafdcdf/go.mod h1:+SR5DhBJrl6ZM7CoCKvpw5BKroDKQ+PJqOg65H/2ktk= github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= +github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= github.com/vishvananda/netns v0.0.0-20180720170159-13995c7128cc/go.mod h1:ZjcWmFBXmLKZu9Nxj3WKYEafiSqer2rnvPr0en9UNpI= github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= @@ -1055,8 +1109,9 @@ github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f h1:mvXjJIHRZy github.com/xeipuuv/gojsonschema v0.0.0-20180618132009-1d523034197f/go.mod h1:5yf86TLmAcydyeJq5YvxkGPE2fm/u4myDekKRoLuqhs= github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= github.com/xlab/treeprint v0.0.0-20181112141820-a009c3971eca/go.mod h1:ce1O1j6UtZfjr22oyGxGLbauSBp2YVXpARAosm7dHBg= -github.com/xo/terminfo v0.0.0-20200218205459-454e5b68f9e8 h1:woqigIZtZUZxws1zZA99nAvuz2mQrxtWsuZSR9c8I/A= github.com/xo/terminfo v0.0.0-20200218205459-454e5b68f9e8/go.mod h1:6Yhx5ZJl5942QrNRWLwITArVT9okUXc5c3brgWJMoDc= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 h1:QldyIu/L63oPpyvQmHgvgickp1Yw510KJOqX7H24mg8= +github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778/go.mod h1:2MuV+tbUrU1zIOPMxZ5EncGwgmMJsa+9ucAQZXxsObs= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -1078,6 +1133,7 @@ go.etcd.io/etcd/client/v2 v2.305.0/go.mod h1:h9puh54ZTgAKtEbut2oe9P4L/oqKCVB6xsX go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.2/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= @@ -1130,10 +1186,12 @@ golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200728195943-123391ffb6de/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83 h1:/ZScEX8SfEmUGRHs0gxpqteO5nfNW6axyZbBdw9A12g= golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2 h1:It14KIkyBFYkHkwZ7k45minvA9aorojkyjGk9KJ5B/w= +golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -1235,6 +1293,7 @@ golang.org/x/net v0.0.0-20200602114024-627f9648deb9/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= @@ -1261,8 +1320,9 @@ golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210402161424-2e8d93401602/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20210413134643-5e61552d6c78/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= -golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c h1:pkQiBZBvdos9qq4wBAHqlzuZHEXo07pqV06ef90u1WI= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1 h1:x622Z2o4hgCr/4CiKWc51jHVKaWdtVpBNmEI8wI9Qns= +golang.org/x/oauth2 v0.0.0-20210615190721-d04028783cf1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1309,6 +1369,7 @@ golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190812073006-9eafafc0a87e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190826190057-c7b8b68b1456/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1339,8 +1400,10 @@ golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200728102440-3e129f6d46b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200817155316-9781c653f443/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200831180312-196b9ba8737a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1348,6 +1411,7 @@ golang.org/x/sys v0.0.0-20200916030750-2334cc1a136f/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200922070232-aee5d888a860/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201015000850-e3ed0017c211/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201117170446-d9b008d0a637/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20201202213521-69691e467435/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1361,6 +1425,7 @@ golang.org/x/sys v0.0.0-20210304124612-50617c2ba197/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210324051608-47abb6519492/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210412220455-f1c623a9e750/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1368,8 +1433,10 @@ golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210426230700-d19ff857e887/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603125802-9665404d3644 h1:CA1DEQ4NdKphKeL70tvsWNdT5oFh1lOjihRcEDROi0I= golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210629170331-7dc0b73dc9fb h1:sgcyLNYiHqEd8eFVh0PflG5ABPTGcPSJacD3s19RTcY= +golang.org/x/sys v0.0.0-20210629170331-7dc0b73dc9fb/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210220032956-6a3ed077a48d/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= @@ -1459,8 +1526,9 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.1.2 h1:kRBLX7v7Af8W7Gdbbc908OJcdgtK8bOz9Uaj8/F1ACA= golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3 h1:L69ShwSZEyCsLKoAxDKeMvLDZkumEe8gXUZAjab0tX8= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1503,8 +1571,9 @@ google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk google.golang.org/api v0.44.0/go.mod h1:EBOGZqzyhtvMDoxwS97ctnh0zUmYY6CxqXsc1AvkYD8= google.golang.org/api v0.45.0/go.mod h1:ISLIJCedJolbZvDfAk+Ctuq5hf+aJ33WgtUsfyFoLXA= google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= -google.golang.org/api v0.48.0 h1:RDAPWfNFY06dffEXfn7hZF5Fr1ZbnChzfQZAPyBd1+I= google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.49.0 h1:gjIBDxlTG7vnzMmEnYwTnvLTF8Rjzo+ETCgEX1YZ/fY= +google.golang.org/api v0.49.0/go.mod h1:BECiH72wsfwUvOVn3+btPD5WHi0LzavZReBndi42L18= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1565,8 +1634,10 @@ google.golang.org/genproto v0.0.0-20210413151531-c14fb6ef47c3/go.mod h1:P3QM42oQ google.golang.org/genproto v0.0.0-20210420162539-3c870d7478d2/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08 h1:pc16UedxnxXXtGxHCSUhafAoVHQZ0yXl8ZelMH4EETc= google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced h1:c5geK1iMU3cDKtFrCVQIcjR3W+JOZMuhIyICMCTbtus= +google.golang.org/genproto v0.0.0-20210617175327-b9e0b3197ced/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= google.golang.org/grpc v0.0.0-20160317175043-d3ddb4469d5a/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1621,7 +1692,6 @@ gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EV gopkg.in/cheggaaa/pb.v1 v1.0.25/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/cheggaaa/pb.v1 v1.0.27/go.mod h1:V/YB90LKu/1FcN3WVnfiiE5oMCibMjukxqG/qStrOgw= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/fsnotify.v1 v1.4.7 h1:xOHLXZwVvI9hhs+cLKq5+I5onOuwQLhQwiu63xxlHs4= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/gcfg.v1 v1.2.0/go.mod h1:yesOnuUOFQAhST5vPY4nbZsb/huCgGGXlipJsBn0b3o= gopkg.in/gemnasium/logrus-airbrake-hook.v2 v2.1.2/go.mod h1:Xk6kEKp8OKb+X14hQBKWaSkCsqBpgog8nAV2xsGOxlo= @@ -1637,6 +1707,7 @@ gopkg.in/natefinch/lumberjack.v2 v2.0.0/go.mod h1:l0ndWWf7gzL7RNwBG7wST/UCcT4T24 gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= gopkg.in/square/go-jose.v2 v2.2.2/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/warnings.v0 v0.1.1/go.mod h1:jksf8JmL6Qr/oQM2OXTHunEvvTAsrWBLb6OOjuVWRNI= diff --git a/hack/benchmark/time-to-k8s/time-to-k8s.sh b/hack/benchmark/time-to-k8s/time-to-k8s.sh index a16beea807cd..c074eb4026c1 100755 --- a/hack/benchmark/time-to-k8s/time-to-k8s.sh +++ b/hack/benchmark/time-to-k8s/time-to-k8s.sh @@ -17,9 +17,9 @@ set -e install_kind() { - curl -Lo ./kind https://kind.sigs.k8s.io/dl/v0.11.0/kind-linux-amd64 + curl -Lo ./kind https://github.com/kubernetes-sigs/kind/releases/latest/download/kind-linux-amd64 chmod +x ./kind - sudo mv ./kind /usr/local + sudo mv ./kind /usr/local/bin/kind } install_k3d() { @@ -51,7 +51,7 @@ run_benchmark() { pwd ( cd ./hack/benchmark/time-to-k8s/time-to-k8s-repo/ && git submodule update --init && - go run . --config local-kubernetes.yaml --iterations 5 --output output.csv ) + go run . --config local-kubernetes.yaml --iterations 10 --output output.csv ) } generate_chart() { diff --git a/hack/generate_docs.sh b/hack/generate_docs.sh deleted file mode 100755 index b900fd921ace..000000000000 --- a/hack/generate_docs.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash - -# Copyright 2021 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. - -set -x - -if [ "$#" -ne 1 ]; then - # there's no secret and therefore no reason to run this script - exit 0 -fi - -install_gh() { - export access_token="$1" - - # Make sure gh is installed and configured - ./hack/jenkins/installers/check_install_gh.sh -} - -config_git() { - git config user.name "minikube-bot" - git config user.email "minikube-bot@google.com" -} - -make generate-docs - -# If there are changes, open a PR -changes=$(git status --porcelain) -if [ "$changes" != "" ]; then - install_gh $1 - config_git - - branch=gendocs$(date +%s%N) - git checkout -b $branch - - git add . - git commit -m "Update generate-docs" - - git remote add minikube-bot https://minikube-bot:"$1"@github.com/minikube-bot/minikube.git - git push -u minikube-bot $branch - gh pr create --repo kubernetes/minikube --base master --head minikube-bot:$branch --title "Update auto-generated docs and translations" --body "Committing changes resulting from \`make generate-docs\`" -fi diff --git a/hack/jenkins/build_iso.sh b/hack/jenkins/build_iso.sh index ec5b4291a97c..5dceb113c4a1 100755 --- a/hack/jenkins/build_iso.sh +++ b/hack/jenkins/build_iso.sh @@ -45,16 +45,11 @@ make release-iso | tee iso-logs.txt ec=$? if [ $ec -gt 0 ]; then if [ "$release" = false ]; then - err=$(tail -100 iso-logs.txt) - gh pr comment ${ghprbPullId} --body "Hi ${ghprbPullAuthorLoginMention}, building a new ISO failed, with the error below: - -
-
-		${err}
-		
-
- - Full logs are at https://storage.cloud.google.com/minikube-builds/logs/${ghprbPullId}/${ghprbActualCommit:0:7}/iso_build.txt + gh pr comment ${ghprbPullId} --body "Hi ${ghprbPullAuthorLoginMention}, building a new ISO failed. + See the logs at: + ``` + https://storage.cloud.google.com/minikube-builds/logs/${ghprbPullId}/${ghprbActualCommit:0:7}/iso_build.txt + ``` " fi exit $ec diff --git a/hack/jenkins/common.sh b/hack/jenkins/common.sh index 1d86c251afba..40acc05d3f37 100755 --- a/hack/jenkins/common.sh +++ b/hack/jenkins/common.sh @@ -142,6 +142,17 @@ fi # Add the out/ directory to the PATH, for using new drivers. export PATH="$(pwd)/out/":$PATH +STARTED_ENVIRONMENTS="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/started_environments_${ROOT_JOB_ID}.txt" +# Ensure STARTED_ENVIRONMENTS exists so we can append (but don't erase any existing entries in STARTED_ENVIRONMENTS) +< /dev/null gsutil cp -n - "${STARTED_ENVIRONMENTS}" +# Copy the job name to APPEND_TMP +APPEND_TMP="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/$(basename $(mktemp))" +echo "${JOB_NAME}"\ + | gsutil cp - "${APPEND_TMP}" +# Append +gsutil compose "${STARTED_ENVIRONMENTS}" "${APPEND_TMP}" "${STARTED_ENVIRONMENTS}" +gsutil rm "${APPEND_TMP}" + echo echo ">> Downloading test inputs from ${MINIKUBE_LOCATION} ..." gsutil -qm cp \ @@ -452,11 +463,15 @@ if [ -z "${EXTERNAL}" ]; then echo ">> public URL: ${REPORT_URL_BASE}/${JOB_GCS_BUCKET}_summary.json" gsutil -qm cp "${SUMMARY_OUT}" "gs://${JOB_GCS_BUCKET}_summary.json" || true - if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then - ./test-flake-chart/upload_tests.sh "${SUMMARY_OUT}" - elif [[ "${JOB_NAME}" == "Docker_Linux" || "${JOB_NAME}" == "Docker_Linux_containerd" || "${JOB_NAME}" == "KVM_Linux" || "${JOB_NAME}" == "KVM_Linux_containerd" ]]; then - ./test-flake-chart/report_flakes.sh "${MINIKUBE_LOCATION}" "${SUMMARY_OUT}" "${JOB_NAME}" - fi + FINISHED_ENVIRONMENTS="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/finished_environments_${ROOT_JOB_ID}.txt" + # Ensure FINISHED_ENVIRONMENTS exists so we can append (but don't erase any existing entries in FINISHED_ENVIRONMENTS) + < /dev/null gsutil cp -n - "${FINISHED_ENVIRONMENTS}" + # Copy the job name to APPEND_TMP + APPEND_TMP="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/$(basename $(mktemp))" + echo "${JOB_NAME}"\ + | gsutil cp - "${APPEND_TMP}" + gsutil compose "${FINISHED_ENVIRONMENTS}" "${APPEND_TMP}" "${FINISHED_ENVIRONMENTS}" + gsutil rm "${APPEND_TMP}" else # Otherwise, put the results in a predictable spot so the upload job can find them REPORTS_PATH=test_reports diff --git a/hack/jenkins/kicbase_auto_build.sh b/hack/jenkins/kicbase_auto_build.sh index 3b02b7cd4645..d4d2949a3e5e 100755 --- a/hack/jenkins/kicbase_auto_build.sh +++ b/hack/jenkins/kicbase_auto_build.sh @@ -67,16 +67,11 @@ CIBUILD=yes make push-kic-base-image | tee kic-logs.txt ec=$? if [ $ec -gt 0 ]; then if [ "$release" = false ]; then - err=$(tail -100 kic-logs.txt) - gh pr comment ${ghprbPullId} --body "Hi ${ghprbPullAuthorLoginMention}, building a new kicbase image failed, with the error below: - -
-
-		${err}
-		
-
- - Full logs are at https://storage.cloud.google.com/minikube-builds/logs/${ghprbPullId}/${ghprbActualCommit:0:7}/kic_image_build.txt + gh pr comment ${ghprbPullId} --body "Hi ${ghprbPullAuthorLoginMention}, building a new kicbase image failed. + See the logs at: + ``` + https://storage.cloud.google.com/minikube-builds/logs/${ghprbPullId}/${ghprbActualCommit:0:7}/kic_image_build.txt + ``` " fi exit $ec diff --git a/hack/jenkins/osx_integration_tests_docker.sh b/hack/jenkins/osx_integration_tests_docker.sh index da32f9d44669..3635553cb564 100755 --- a/hack/jenkins/osx_integration_tests_docker.sh +++ b/hack/jenkins/osx_integration_tests_docker.sh @@ -34,13 +34,6 @@ EXTRA_TEST_ARGS="" EXPECTED_DEFAULT_DRIVER="docker" EXTERNAL="yes" -# fix mac os as a service on mac os -# https://github.com/docker/for-mac/issues/882#issuecomment-506372814 -#osascript -e 'quit app "Docker"' -#/Applications/Docker.app/Contents/MacOS/Docker --quit-after-install --unattended || true -#osascript -e 'quit app "Docker"' -#/Applications/Docker.app/Contents/MacOS/Docker --unattended & - begin=$(date +%s) while [ -z "$(docker info 2> /dev/null )" ]; do diff --git a/hack/jenkins/release_build_and_upload.sh b/hack/jenkins/release_build_and_upload.sh index 701d05329f0e..48cf78d1987e 100755 --- a/hack/jenkins/release_build_and_upload.sh +++ b/hack/jenkins/release_build_and_upload.sh @@ -64,6 +64,7 @@ env BUILD_IN_DOCKER=y \ "out/minikube-${RPM_VERSION}-${RPM_REVISION}.ppc64le.rpm" \ "out/minikube-${RPM_VERSION}-${RPM_REVISION}.s390x.rpm" \ "out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_amd64.deb" \ + "out/docker-machine-driver-kvm2_${DEB_VERSION}-${DEB_REVISION}_arm64.deb" \ "out/docker-machine-driver-kvm2-${RPM_VERSION}-${RPM_REVISION}.x86_64.rpm" # check if 'commit: ' line contains '-dirty' commit suffix diff --git a/hack/jenkins/test-flake-chart/flake_chart.js b/hack/jenkins/test-flake-chart/flake_chart.js index 298455f7ac94..f6d16313dd94 100644 --- a/hack/jenkins/test-flake-chart/flake_chart.js +++ b/hack/jenkins/test-flake-chart/flake_chart.js @@ -253,7 +253,7 @@ function displayTestAndEnvironmentChart(testData, testName, environmentName) { chart.draw(data, options); } -function createRecentFlakePercentageTable(recentFlakePercentage, environmentName) { +function createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePercentageMap, environmentName) { const createCell = (elementType, text) => { const element = document.createElement(elementType); element.innerHTML = text; @@ -262,13 +262,20 @@ function createRecentFlakePercentageTable(recentFlakePercentage, environmentName const table = document.createElement("table"); const tableHeaderRow = document.createElement("tr"); + tableHeaderRow.appendChild(createCell("th", "Rank")); tableHeaderRow.appendChild(createCell("th", "Test Name")).style.textAlign = "left"; tableHeaderRow.appendChild(createCell("th", "Recent Flake Percentage")); + tableHeaderRow.appendChild(createCell("th", "Growth (since last 15 days)")); table.appendChild(tableHeaderRow); - for (const {testName, flakeRate} of recentFlakePercentage){ + for (let i = 0; i < recentFlakePercentage.length; i++) { + const {testName, flakeRate} = recentFlakePercentage[i]; const row = document.createElement("tr"); + row.appendChild(createCell("td", "" + (i + 1))).style.textAlign = "center"; row.appendChild(createCell("td", `${testName}`)); row.appendChild(createCell("td", `${flakeRate.toFixed(2)}%`)).style.textAlign = "right"; + const growth = previousFlakePercentageMap.has(testName) ? + flakeRate - previousFlakePercentageMap.get(testName) : 0; + row.appendChild(createCell("td", ` 0 ? "red" : "green")}">${growth > 0 ? '+' + growth.toFixed(2) : growth.toFixed(2)}%`)); table.appendChild(row); } return table; @@ -297,9 +304,10 @@ function displayEnvironmentChart(testData, environmentName) { } const orderedDates = Array.from(uniqueDates).sort(); const recentDates = orderedDates.slice(-dateRange); - - const recentFlakePercentage = Array.from(aggregatedRuns).map(([testName, data]) => { - const {flakeCount, totalCount} = recentDates.map(date => { + const previousDates = orderedDates.slice(-2 * dateRange, -dateRange); + + const computeFlakePercentage = (runs, dates) => Array.from(runs).map(([testName, data]) => { + const {flakeCount, totalCount} = dates.map(date => { const dateInfo = data.get(date); return dateInfo === undefined ? null : { flakeRate: dateInfo.flakeRate, @@ -314,7 +322,13 @@ function displayEnvironmentChart(testData, environmentName) { testName, flakeRate: totalCount === 0 ? 0 : flakeCount / totalCount, }; - }).sort((a, b) => b.flakeRate - a.flakeRate); + }); + + const recentFlakePercentage = computeFlakePercentage(aggregatedRuns, recentDates) + .sort((a, b) => b.flakeRate - a.flakeRate); + const previousFlakePercentageMap = new Map( + computeFlakePercentage(aggregatedRuns, previousDates) + .map(({testName, flakeRate}) => [testName, flakeRate])); const recentTopFlakes = recentFlakePercentage .slice(0, topFlakes) @@ -355,7 +369,7 @@ function displayEnvironmentChart(testData, environmentName) { const chart = new google.visualization.LineChart(document.getElementById('chart_div')); chart.draw(data, options); - document.body.appendChild(createRecentFlakePercentageTable(recentFlakePercentage, environmentName)); + document.body.appendChild(createRecentFlakePercentageTable(recentFlakePercentage, previousFlakePercentageMap, environmentName)); } async function init() { diff --git a/hack/jenkins/test-flake-chart/report_flakes.sh b/hack/jenkins/test-flake-chart/report_flakes.sh index 62ceed336079..cffc628e9cbb 100755 --- a/hack/jenkins/test-flake-chart/report_flakes.sh +++ b/hack/jenkins/test-flake-chart/report_flakes.sh @@ -21,13 +21,13 @@ set -eu -o pipefail if [ "$#" -ne 3 ]; then - echo "Wrong number of arguments. Usage: report_flakes.sh " 1>&2 + echo "Wrong number of arguments. Usage: report_flakes.sh " 1>&2 exit 1 fi PR_NUMBER=$1 -SUMMARY_DATA=$2 -ENVIRONMENT=$3 +SHORT_COMMIT=$2 +ENVIRONMENT_LIST=$3 # To prevent having a super-long comment, add a maximum number of tests to report. MAX_REPORTED_TESTS=30 @@ -35,13 +35,14 @@ MAX_REPORTED_TESTS=30 DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) TMP_DATA=$(mktemp) -# 1) Process the data in the gopogh summary. -# 2) Filter tests to only include failed tests on the environment (and only get their names). -# 3) Sort the names of the tests. +# 1) Process the data in each gopogh summary. +# 2) Filter tests to only include failed tests (and only get their names and environment). +# 3) Sort by environment, then test name. # 4) Store in file $TMP_DATA. -< "$SUMMARY_DATA" $DIR/process_data.sh \ - | sed -n -r -e "s/[0-9a-f]*,[0-9-]*,$ENVIRONMENT,([a-zA-Z\/_-]*),Failed,[.0-9]*/\1/p" \ - | sort \ +gsutil cat $(< "${ENVIRONMENT_LIST}" sed -r "s/^/gs:\\/\\/minikube-builds\\/logs\\/${PR_NUMBER}\\/${SHORT_COMMIT}\\/; s/$/_summary.json/") \ + | $DIR/process_data.sh \ + | sed -n -r -e "s/[0-9a-f]*,[0-9-]*,([a-zA-Z\/_0-9-]*),([a-zA-Z\/_0-9-]*),Failed,[.0-9]*/\1:\2/p" \ + | sort -t, -k\ > "$TMP_DATA" # Download the precomputed flake rates from the GCS bucket into file $TMP_FLAKE_RATES. @@ -49,12 +50,12 @@ TMP_FLAKE_RATES=$(mktemp) gsutil cp gs://minikube-flake-rate/flake_rates.csv "$TMP_FLAKE_RATES" TMP_FAILED_RATES="$TMP_FLAKE_RATES\_filtered" -# 1) Parse/filter the flake rates to only include the test name and flake rates for environment. -# 2) Sort the flake rates based on test name. +# 1) Parse the flake rates to only include the environment, test name, and flake rates. +# 2) Sort the flake rates based on environment+test name. # 3) Join the flake rates with the failing tests to only get flake rates of failing tests. # 4) Sort failed test flake rates based on the flakiness of that test - stable tests should be first on the list. # 5) Store in file $TMP_FAILED_RATES. -< "$TMP_FLAKE_RATES" sed -n -r -e "s/$ENVIRONMENT,([a-zA-Z\/_-]*),([.0-9]*),[.0-9]*/\1,\2/p" \ +< "$TMP_FLAKE_RATES" sed -n -r -e "s/([a-zA-Z0-9_-]*),([a-zA-Z\/0-9_-]*),([.0-9]*),[.0-9]*/\1:\2,\3/p" \ | sort -t, -k1,1 \ | join -t , -j 1 "$TMP_DATA" - \ | sort -g -t, -k2,2 \ @@ -68,12 +69,12 @@ fi # Create the comment template. TMP_COMMENT=$(mktemp) -printf "These are the flake rates of all failed tests on %s.\n|Failed Tests|Flake Rate (%%)|\n|---|---|\n" "$ENVIRONMENT" > "$TMP_COMMENT" +printf "These are the flake rates of all failed tests per %s.\n|Environment|Failed Tests|Flake Rate (%%)|\n|---|---|---|\n" "$ENVIRONMENT" > "$TMP_COMMENT" # 1) Get the first $MAX_REPORTED_TESTS lines. -# 2) Print a row in the table with the test name, flake rate, and a link to the flake chart for that test. +# 2) Print a row in the table with the environment, test name, flake rate, and a link to the flake chart for that test. # 3) Append these rows to file $TMP_COMMENT. < "$TMP_FAILED_RATES" head -n $MAX_REPORTED_TESTS \ - | sed -n -r -e "s/([a-zA-Z\/_-]*),([.0-9]*)/|\1|\2 ([chart](https:\/\/storage.googleapis.com\/minikube-flake-rate\/flake_chart.html?env=$ENVIRONMENT\&test=\1))|/p" \ + | sed -n -r -e "s/([a-zA-Z\/0-9_-]*):([a-zA-Z\/0-9_-]*),([.0-9]*)/|\1|\2|\3 ([chart](https:\/\/storage.googleapis.com\/minikube-flake-rate\/flake_chart.html?env=\1\&test=\2))|/p" \ >> "$TMP_COMMENT" # If there are too many failing tests, add an extra row explaining this, and a message after the table. @@ -81,6 +82,8 @@ if [[ "$FAILED_RATES_LINES" -gt 30 ]]; then printf "|More tests...|Continued...|\n\nToo many tests failed - See test logs for more details." >> "$TMP_COMMENT" fi +printf "\n\nTo see the flake rates of all tests on $ENVIRONMENT, click [here](https:\/\/storage.googleapis.com\/minikube-flake-rate\/flake_chart.html?env=$ENVIRONMENT)." >> "$TMP_COMMENT" + # install gh if not present $DIR/../installers/check_install_gh.sh diff --git a/hack/jenkins/test-flake-chart/sync_tests.sh b/hack/jenkins/test-flake-chart/sync_tests.sh new file mode 100644 index 000000000000..94e303725589 --- /dev/null +++ b/hack/jenkins/test-flake-chart/sync_tests.sh @@ -0,0 +1,73 @@ +#!/bin/bash + +# Copyright 2021 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. + +# This script is called once per integration test. If all integration tests that +# have registered themselves in the started environment list have also +# registered themselves in the finished environment list, this script reports +# flakes or uploads flakes to flake data. +# +# This script expects the following env variables: +# MINIKUBE_LOCATION: The Github location being run on (e.g. master, 11000). +# COMMIT: Commit hash the tests ran on. +# ROOT_JOB_ID: Job ID to use for synchronization. + +set -o pipefail + +BUCKET_PATH="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}" +STARTED_LIST=$(gsutil cat "${BUCKET_PATH}/started_environments_${ROOT_JOB_ID}.txt" | sort | uniq) + +if [ $? -ne 0 ]; then + echo "Unable to read environment list. Likely being run before all tests are ready or after tests have already been uploaded." 1>&2 + exit 0 +fi + +set -eu -o pipefail + +FINISHED_LIST=$(mktemp) +gsutil cat "${BUCKET_PATH}/finished_environments_${ROOT_JOB_ID}.txt"\ + | sort\ + | uniq > "${FINISHED_LIST}" + +STARTED_COUNT=$(echo "${STARTED_LIST}" | wc -l) +FINISHED_COUNT=$(\ + echo "${STARTED_LIST}"\ + | join - "${FINISHED_LIST}"\ + | wc -l) + +if [ ${STARTED_COUNT} -ne ${FINISHED_COUNT} ]; then + echo "Started environments are not all finished! Started: ${STARTED_LIST}, Finished: $(cat ${FINISHED_LIST}))" + exit 0 +fi + +# Prevent other invocations of this script from uploading the same thing multiple times. +gsutil rm "${BUCKET_PATH}/started_environments_${ROOT_JOB_ID}.txt" + +# At this point, we know all integration tests are done and we can process all summaries safely. + +# Get directory of this script. +DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd ) + +if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then + for ENVIRONMENT in ${STARTED_LIST}; do + SUMMARY="${BUCKET_PATH}/${ENVIRONMENT}_summary.json" + "${DIR}/upload_tests.sh" "${SUMMARY}" + done +else + "${DIR}/report_flakes.sh" "${MINIKUBE_LOCATION}" "${COMMIT:0:7}" "${FINISHED_LIST}" +fi + +gsutil rm "${BUCKET_PATH}/finished_environments_${ROOT_JOB_ID}.txt" +rm "${FINISHED_LIST}" diff --git a/hack/jenkins/test-flake-chart/upload_tests.sh b/hack/jenkins/test-flake-chart/upload_tests.sh index 5906f73ae173..1630ef7ab0e7 100755 --- a/hack/jenkins/test-flake-chart/upload_tests.sh +++ b/hack/jenkins/test-flake-chart/upload_tests.sh @@ -16,12 +16,12 @@ # Takes a gopogh summary, extracts test data as a CSV and appends to the # existing CSV data in the GCS bucket. -# Example usage: ./jenkins_upload_tests.sh gopogh_summary.json +# Example usage: ./upload_tests.sh gopogh_summary.json set -eu -o pipefail if [ "$#" -ne 1 ]; then - echo "Wrong number of arguments. Usage: jenkins_upload_tests.sh " 1>&2 + echo "Wrong number of arguments. Usage: upload_tests.sh " 1>&2 exit 1 fi diff --git a/hack/jenkins/upload_integration_report.sh b/hack/jenkins/upload_integration_report.sh index 8bb6735e66f2..7d788e7ff731 100644 --- a/hack/jenkins/upload_integration_report.sh +++ b/hack/jenkins/upload_integration_report.sh @@ -48,6 +48,13 @@ SUMMARY_OUT="$ARTIFACTS/summary.txt" echo ">> uploading ${SUMMARY_OUT}" gsutil -qm cp "${SUMMARY_OUT}" "gs://${JOB_GCS_BUCKET}_summary.json" || true -if [[ "${MINIKUBE_LOCATION}" == "master" ]]; then - ./test-flake-chart/upload_tests.sh "${SUMMARY_OUT}" -fi +FINISHED_ENVIRONMENTS="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/finished_environments_${ROOT_JOB_ID}.txt" +# Ensure FINISHED_ENVIRONMENTS exists so we can append (but don't erase any existing entries in FINISHED_ENVIRONMENTS) +< /dev/null gsutil cp -n - "${FINISHED_ENVIRONMENTS}" +# Copy the job name to APPEND_TMP +APPEND_TMP="gs://minikube-builds/logs/${MINIKUBE_LOCATION}/${COMMIT:0:7}/$(basename $(mktemp))" +echo "${JOB_NAME}"\ + | gsutil cp - "${APPEND_TMP}" +# Append +gsutil compose "${FINISHED_ENVIRONMENTS}" "${APPEND_TMP}" "${FINISHED_ENVIRONMENTS}" +gsutil rm "${APPEND_TMP}" diff --git a/hack/jenkins/windows_integration_test_docker.ps1 b/hack/jenkins/windows_integration_test_docker.ps1 index 244279a2362c..7cdaa443a90a 100644 --- a/hack/jenkins/windows_integration_test_docker.ps1 +++ b/hack/jenkins/windows_integration_test_docker.ps1 @@ -39,12 +39,20 @@ If ($lastexitcode -gt 0) { Exit $lastexitcode } -# Remove unused images and containers -docker system prune --all --force - +$started_environments="gs://$gcs_bucket/started_environments_$env:ROOT_JOB_ID.txt" +$append_tmp="gs://$gcs_bucket/tmp$(-join ((65..90) + (97..122) | Get-Random -Count 10 | % {[char]$_}))" +# Ensure started_environments exists so we can append (but don't erase any existing entries in started_environments) +$null | gsutil cp -n - "$started_environments" +# Copy the Docker_Windows to append_tmp +echo "Docker_Windows" | gsutil cp - "$append_tmp" +gsutil compose "$started_environments" "$append_tmp" "$started_environments" +gsutil rm "$append_tmp" ./out/minikube-windows-amd64.exe delete --all +# Remove unused images and containers +docker system prune --all --force --volumes + ./out/windows_integration_setup.ps1 docker ps -aq | ForEach -Process {docker rm -fv $_} @@ -89,6 +97,14 @@ gsutil -qm cp testout.json gs://$gcs_bucket/Docker_Windows.json gsutil -qm cp testout.html gs://$gcs_bucket/Docker_Windows.html gsutil -qm cp testout_summary.json gs://$gcs_bucket/Docker_Windows_summary.json +$finished_environments="gs://$gcs_bucket/finished_environments_$env:ROOT_JOB_ID.txt" +$append_tmp="gs://$gcs_bucket/tmp$(-join ((65..90) + (97..122) | Get-Random -Count 10 | % {[char]$_}))" +# Ensure finished_environments exists so we can append (but don't erase any existing entries in finished_environments) +$null | gsutil cp -n - "$finished_environments" +# Copy the Docker_Windows to append_tmp +echo "Docker_Windows" | gsutil cp - "$append_tmp" +gsutil compose "$started_environments" "$append_tmp" "$started_environments" +gsutil rm "$append_tmp" # Update the PR with the new info $json = "{`"state`": `"$env:status`", `"description`": `"Jenkins: $description`", `"target_url`": `"$env:target_url`", `"context`": `"Docker_Windows`"}" diff --git a/hack/preload-images/kubernetes.go b/hack/preload-images/kubernetes.go index 898208bb6d6b..6d01cc378636 100644 --- a/hack/preload-images/kubernetes.go +++ b/hack/preload-images/kubernetes.go @@ -19,7 +19,7 @@ package main import ( "context" - "github.com/google/go-github/github" + "github.com/google/go-github/v36/github" "k8s.io/klog/v2" ) diff --git a/hack/update/github.go b/hack/update/github.go index 7de188f6dfa5..97b55258d731 100644 --- a/hack/update/github.go +++ b/hack/update/github.go @@ -26,7 +26,7 @@ import ( "golang.org/x/mod/semver" "golang.org/x/oauth2" - "github.com/google/go-github/v32/github" + "github.com/google/go-github/v36/github" "k8s.io/klog/v2" ) diff --git a/hack/update/golang_version/update_golang_version.go b/hack/update/golang_version/update_golang_version.go index 92e504bae751..d4766fc36ae2 100644 --- a/hack/update/golang_version/update_golang_version.go +++ b/hack/update/golang_version/update_golang_version.go @@ -75,6 +75,11 @@ var ( `GO_VERSION: '.*`: `GO_VERSION: '{{.StableVersion}}'`, }, }, + ".github/workflows/update_k8s_versions.yml": { + Replace: map[string]string{ + `GO_VERSION: '.*`: `GO_VERSION: '{{.StableVersion}}'`, + }, + }, ".github/workflows/pr_verified.yaml": { Replace: map[string]string{ `GO_VERSION: '.*`: `GO_VERSION: '{{.StableVersion}}'`, diff --git a/installers/linux/kvm/Dockerfile b/installers/linux/kvm/Dockerfile.amd64 similarity index 100% rename from installers/linux/kvm/Dockerfile rename to installers/linux/kvm/Dockerfile.amd64 diff --git a/installers/linux/kvm/Dockerfile.arm64 b/installers/linux/kvm/Dockerfile.arm64 new file mode 100644 index 000000000000..272c0a0d9234 --- /dev/null +++ b/installers/linux/kvm/Dockerfile.arm64 @@ -0,0 +1,43 @@ +# Copyright 2019 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. + +FROM ubuntu:20.04 + +ARG GO_VERSION + +RUN apt update + +RUN echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal main universe multiverse" >> /etc/apt/sources.list && \ + echo "deb [arch=arm64] http://ports.ubuntu.com/ubuntu-ports focal-updates main universe restricted multiverse" >> /etc/apt/sources.list && \ + dpkg --add-architecture arm64 && \ + (apt update || true) + +RUN DEBIAN_FRONTEND=noninteractive \ + apt install \ + -o APT::Immediate-Configure=false -y \ + gcc-aarch64-linux-gnu \ + make \ + pkg-config \ + curl \ + libvirt-dev:arm64 && \ + dpkg --configure -a + +RUN curl -sSL https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz | tar -C /usr/local -xzf - + +ENV GOPATH /go + +ENV CC=aarch64-linux-gnu-gcc +ENV CGO_ENABLED=1 +ENV PKG_CONFIG_PATH=/usr/lib/aarch64-linux-gnu/pkgconfig +ENV PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/go/bin:/go/bin diff --git a/pkg/drivers/kic/oci/network.go b/pkg/drivers/kic/oci/network.go index b48fefdf6fea..b8c34533404b 100644 --- a/pkg/drivers/kic/oci/network.go +++ b/pkg/drivers/kic/oci/network.go @@ -24,7 +24,7 @@ import ( "strconv" "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" diff --git a/pkg/drivers/kic/types.go b/pkg/drivers/kic/types.go index 9f7de00dd395..afc5e6bf3f71 100644 --- a/pkg/drivers/kic/types.go +++ b/pkg/drivers/kic/types.go @@ -24,13 +24,13 @@ import ( const ( // Version is the current version of kic - Version = "v0.0.24" + Version = "v0.0.24-1625086337-11824" // SHA of the kic base image - baseImageSHA = "ba324e0dc025040a8ea6b883d008ec4a43a47db106fb59ac7446982c20c2cdc5" + baseImageSHA = "9e7c8040758103e42825d78af47706a9c18b1aab2659eeac30eb417757b9b42a" // The name of the GCR kicbase repository - gcrRepo = "gcr.io/k8s-minikube/kicbase" + gcrRepo = "gcr.io/k8s-minikube/kicbase-builds" // The name of the Dockerhub kicbase repository - dockerhubRepo = "kicbase/stable" + dockerhubRepo = "kicbase/build" ) var ( diff --git a/pkg/minikube/bootstrapper/bsutil/extraconfig.go b/pkg/minikube/bootstrapper/bsutil/extraconfig.go index 7e8c04944afe..6c5f13216500 100644 --- a/pkg/minikube/bootstrapper/bsutil/extraconfig.go +++ b/pkg/minikube/bootstrapper/bsutil/extraconfig.go @@ -22,7 +22,7 @@ import ( "sort" "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/config" diff --git a/pkg/minikube/bootstrapper/bsutil/kubeadm.go b/pkg/minikube/bootstrapper/bsutil/kubeadm.go index 2a1f750cf4cf..746584b7d672 100644 --- a/pkg/minikube/bootstrapper/bsutil/kubeadm.go +++ b/pkg/minikube/bootstrapper/bsutil/kubeadm.go @@ -22,7 +22,7 @@ import ( "fmt" "path" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/bootstrapper/bsutil/ktmpl" diff --git a/pkg/minikube/bootstrapper/bsutil/versions.go b/pkg/minikube/bootstrapper/bsutil/versions.go index 5362fb533985..3f0a294953c4 100644 --- a/pkg/minikube/bootstrapper/bsutil/versions.go +++ b/pkg/minikube/bootstrapper/bsutil/versions.go @@ -20,7 +20,7 @@ import ( "path" "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/vmpath" "k8s.io/minikube/pkg/util" diff --git a/pkg/minikube/bootstrapper/bsutil/versions_test.go b/pkg/minikube/bootstrapper/bsutil/versions_test.go index a22efeeb35d1..87ef7256d105 100644 --- a/pkg/minikube/bootstrapper/bsutil/versions_test.go +++ b/pkg/minikube/bootstrapper/bsutil/versions_test.go @@ -19,7 +19,7 @@ package bsutil import ( "testing" - "github.com/blang/semver" + "github.com/blang/semver/v4" ) func TestVersionIsBetween(t *testing.T) { diff --git a/pkg/minikube/bootstrapper/images/images.go b/pkg/minikube/bootstrapper/images/images.go index d6c822ee88aa..2d0a13e3a367 100644 --- a/pkg/minikube/bootstrapper/images/images.go +++ b/pkg/minikube/bootstrapper/images/images.go @@ -21,7 +21,7 @@ import ( "fmt" "path" - "github.com/blang/semver" + "github.com/blang/semver/v4" "k8s.io/minikube/pkg/version" ) diff --git a/pkg/minikube/bootstrapper/images/images_test.go b/pkg/minikube/bootstrapper/images/images_test.go index 679f260c25dc..5db9d5d18143 100644 --- a/pkg/minikube/bootstrapper/images/images_test.go +++ b/pkg/minikube/bootstrapper/images/images_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/google/go-cmp/cmp" "k8s.io/minikube/pkg/version" ) diff --git a/pkg/minikube/bootstrapper/images/kubeadm.go b/pkg/minikube/bootstrapper/images/kubeadm.go index 10bab0a1c050..31dca93a8b2a 100644 --- a/pkg/minikube/bootstrapper/images/kubeadm.go +++ b/pkg/minikube/bootstrapper/images/kubeadm.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" ) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index dcea23707f3e..e2990381a166 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -32,7 +32,7 @@ import ( // WARNING: Do not use path/filepath in this package unless you want bizarre Windows paths - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine" "github.com/docker/machine/libmachine/state" "github.com/pkg/errors" diff --git a/pkg/minikube/config/types.go b/pkg/minikube/config/types.go index aee9b1ac2840..34dc7065c0da 100644 --- a/pkg/minikube/config/types.go +++ b/pkg/minikube/config/types.go @@ -20,7 +20,7 @@ import ( "net" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" ) // Profile represents a minikube profile diff --git a/pkg/minikube/cruntime/containerd.go b/pkg/minikube/cruntime/containerd.go index 0ce5207646b0..24e872bc663a 100644 --- a/pkg/minikube/cruntime/containerd.go +++ b/pkg/minikube/cruntime/containerd.go @@ -29,7 +29,7 @@ import ( "text/template" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/assets" diff --git a/pkg/minikube/cruntime/crio.go b/pkg/minikube/cruntime/crio.go index f0da74092c00..82d30647f647 100644 --- a/pkg/minikube/cruntime/crio.go +++ b/pkg/minikube/cruntime/crio.go @@ -25,7 +25,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/assets" diff --git a/pkg/minikube/cruntime/cruntime.go b/pkg/minikube/cruntime/cruntime.go index 6510f905369c..95d90848396e 100644 --- a/pkg/minikube/cruntime/cruntime.go +++ b/pkg/minikube/cruntime/cruntime.go @@ -21,7 +21,7 @@ import ( "fmt" "os/exec" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/assets" diff --git a/pkg/minikube/cruntime/docker.go b/pkg/minikube/cruntime/docker.go index 9ec896676cfa..c25c6cc9303d 100644 --- a/pkg/minikube/cruntime/docker.go +++ b/pkg/minikube/cruntime/docker.go @@ -24,7 +24,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/assets" diff --git a/pkg/minikube/download/binary.go b/pkg/minikube/download/binary.go index 83743558475c..dc9de3a14ef5 100644 --- a/pkg/minikube/download/binary.go +++ b/pkg/minikube/download/binary.go @@ -24,7 +24,7 @@ import ( "k8s.io/minikube/pkg/minikube/detect" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/localpath" diff --git a/pkg/minikube/download/driver.go b/pkg/minikube/download/driver.go index 2a3f12194980..93ce6e105b0b 100644 --- a/pkg/minikube/download/driver.go +++ b/pkg/minikube/download/driver.go @@ -20,7 +20,7 @@ import ( "fmt" "os" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "k8s.io/minikube/pkg/minikube/out" "k8s.io/minikube/pkg/minikube/style" diff --git a/pkg/minikube/driver/auxdriver/install.go b/pkg/minikube/driver/auxdriver/install.go index e498f85bfe1a..76d119215570 100644 --- a/pkg/minikube/driver/auxdriver/install.go +++ b/pkg/minikube/driver/auxdriver/install.go @@ -25,7 +25,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/juju/mutex" "github.com/pkg/errors" diff --git a/pkg/minikube/driver/auxdriver/version.go b/pkg/minikube/driver/auxdriver/version.go index 298ac1094ab6..8fcc971c501d 100644 --- a/pkg/minikube/driver/auxdriver/version.go +++ b/pkg/minikube/driver/auxdriver/version.go @@ -17,7 +17,7 @@ limitations under the License. package auxdriver import ( - "github.com/blang/semver" + "github.com/blang/semver/v4" "k8s.io/klog/v2" "k8s.io/minikube/pkg/minikube/driver" ) diff --git a/pkg/minikube/driver/auxdriver/version_test.go b/pkg/minikube/driver/auxdriver/version_test.go index d5569cc9f7d7..6cc652a80578 100644 --- a/pkg/minikube/driver/auxdriver/version_test.go +++ b/pkg/minikube/driver/auxdriver/version_test.go @@ -19,7 +19,7 @@ package auxdriver import ( "testing" - "github.com/blang/semver" + "github.com/blang/semver/v4" "k8s.io/minikube/pkg/minikube/driver" ) diff --git a/pkg/minikube/node/start.go b/pkg/minikube/node/start.go index 5d5ac2e1f07a..c8a79d088970 100644 --- a/pkg/minikube/node/start.go +++ b/pkg/minikube/node/start.go @@ -28,7 +28,7 @@ import ( "sync" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine" "github.com/docker/machine/libmachine/host" "github.com/pkg/errors" diff --git a/pkg/minikube/notify/notify.go b/pkg/minikube/notify/notify.go index 7bb7de76d6cf..c993714814a5 100644 --- a/pkg/minikube/notify/notify.go +++ b/pkg/minikube/notify/notify.go @@ -25,7 +25,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/pkg/errors" "github.com/spf13/viper" "k8s.io/klog/v2" diff --git a/pkg/minikube/notify/notify_test.go b/pkg/minikube/notify/notify_test.go index 6c6363c57e73..839e559a7893 100644 --- a/pkg/minikube/notify/notify_test.go +++ b/pkg/minikube/notify/notify_test.go @@ -28,7 +28,7 @@ import ( "testing" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/spf13/viper" "k8s.io/minikube/pkg/minikube/config" "k8s.io/minikube/pkg/minikube/out" diff --git a/pkg/minikube/reason/k8s.go b/pkg/minikube/reason/k8s.go index bbaa22c4fc96..d713f5e4cb41 100644 --- a/pkg/minikube/reason/k8s.go +++ b/pkg/minikube/reason/k8s.go @@ -16,7 +16,7 @@ limitations under the License. package reason -import "github.com/blang/semver" +import "github.com/blang/semver/v4" // K8sIssue represents a known issue with a particular version of Kubernetes type K8sIssue struct { diff --git a/pkg/minikube/registry/drvs/podman/podman.go b/pkg/minikube/registry/drvs/podman/podman.go index a0d3f42062a0..f92220db87c9 100644 --- a/pkg/minikube/registry/drvs/podman/podman.go +++ b/pkg/minikube/registry/drvs/podman/podman.go @@ -26,7 +26,7 @@ import ( "strings" "time" - "github.com/blang/semver" + "github.com/blang/semver/v4" "github.com/docker/machine/libmachine/drivers" "k8s.io/klog/v2" "k8s.io/minikube/pkg/drivers/kic" diff --git a/pkg/minikube/sysinit/systemd.go b/pkg/minikube/sysinit/systemd.go index c452bba729d3..54d4084d773d 100644 --- a/pkg/minikube/sysinit/systemd.go +++ b/pkg/minikube/sysinit/systemd.go @@ -59,7 +59,10 @@ func (s *Systemd) Disable(svc string) error { // DisableNow disables a service and stops it too (not waiting for next restart) func (s *Systemd) DisableNow(svc string) error { - _, err := s.r.RunCmd(exec.Command("sudo", "systemctl", "disable", "--now", svc)) + cmd := exec.Command("sudo", "systemctl", "disable", "--now", svc) + // See https://github.com/kubernetes/minikube/issues/11615#issuecomment-861794258 + cmd.Env = append(cmd.Env, "SYSTEMCTL_SKIP_SYSV=1") + _, err := s.r.RunCmd(cmd) return err } diff --git a/pkg/perf/monitor/github.go b/pkg/perf/monitor/github.go index eb3146136ed7..bded6c3a658e 100644 --- a/pkg/perf/monitor/github.go +++ b/pkg/perf/monitor/github.go @@ -22,7 +22,7 @@ import ( "os" "time" - "github.com/google/go-github/github" + "github.com/google/go-github/v36/github" "github.com/pkg/errors" "golang.org/x/oauth2" ) diff --git a/pkg/util/retry/retry.go b/pkg/util/retry/retry.go index 3e40547f4e45..09f1ae65cf15 100644 --- a/pkg/util/retry/retry.go +++ b/pkg/util/retry/retry.go @@ -20,7 +20,7 @@ package retry import ( "time" - "github.com/cenkalti/backoff" + "github.com/cenkalti/backoff/v4" "k8s.io/klog/v2" ) diff --git a/pkg/util/utils.go b/pkg/util/utils.go index 227c8402bb1b..8ce9df808de8 100644 --- a/pkg/util/utils.go +++ b/pkg/util/utils.go @@ -23,7 +23,7 @@ import ( "path/filepath" "strconv" - "github.com/blang/semver" + "github.com/blang/semver/v4" units "github.com/docker/go-units" "github.com/pkg/errors" ) diff --git a/pkg/util/utils_test.go b/pkg/util/utils_test.go index 4ad1ba2bf42a..f0fc06cc6da3 100644 --- a/pkg/util/utils_test.go +++ b/pkg/util/utils_test.go @@ -24,7 +24,7 @@ import ( "syscall" "testing" - "github.com/blang/semver" + "github.com/blang/semver/v4" ) func TestGetBinaryDownloadURL(t *testing.T) { diff --git a/pkg/version/version.go b/pkg/version/version.go index 0faeb4964f75..dd348ff126b5 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -19,7 +19,7 @@ package version import ( "strings" - "github.com/blang/semver" + "github.com/blang/semver/v4" ) // VersionPrefix is the prefix of the git tag for a version diff --git a/site/content/en/docs/benchmarks/timeToK8s/v1.21.0.md b/site/content/en/docs/benchmarks/timeToK8s/v1.21.0.md new file mode 100644 index 000000000000..94c3ce9a7d11 --- /dev/null +++ b/site/content/en/docs/benchmarks/timeToK8s/v1.21.0.md @@ -0,0 +1,7 @@ +--- +title: "v1.21.0 Benchmark" +linkTitle: "v1.21.0 Benchmark" +weight: 1 +--- + +![time-to-k8s](/images/benchmarks/timeToK8s/v1.21.0.png) diff --git a/site/content/en/docs/commands/start.md b/site/content/en/docs/commands/start.md index b6f02258be71..93899fa9bbe8 100644 --- a/site/content/en/docs/commands/start.md +++ b/site/content/en/docs/commands/start.md @@ -26,7 +26,7 @@ minikube start [flags] --apiserver-names strings A set of apiserver names which are used in the generated certificate for kubernetes. This can be used if you want to make the apiserver available from outside the machine --apiserver-port int The apiserver listening port (default 8443) --auto-update-drivers If set, automatically updates drivers to the latest version. Defaults to true. (default true) - --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase:v0.0.24@sha256:ba324e0dc025040a8ea6b883d008ec4a43a47db106fb59ac7446982c20c2cdc5") + --base-image string The base image to use for docker/podman drivers. Intended for local development. (default "gcr.io/k8s-minikube/kicbase-builds:v0.0.24-1625086337-11824@sha256:9e7c8040758103e42825d78af47706a9c18b1aab2659eeac30eb417757b9b42a") --cache-images If true, cache docker images for the current bootstrapper and load them into the machine. Always false with --driver=none. (default true) --cni string CNI plug-in to use. Valid options: auto, bridge, calico, cilium, flannel, kindnet, or path to a CNI manifest (default: auto) --container-runtime string The container runtime to be used (docker, cri-o, containerd). (default "docker") diff --git a/site/content/en/docs/contrib/test_flakes.en.md b/site/content/en/docs/contrib/test_flakes.en.md new file mode 100644 index 000000000000..febd82bf3301 --- /dev/null +++ b/site/content/en/docs/contrib/test_flakes.en.md @@ -0,0 +1,22 @@ +--- +title: "Integration Test Flake Rates" +description: > + Charts to visualize flake rates of all integration tests, split by environment +--- +## Flake rate charts by Environment + +|OS|Driver|ContainerRuntime|Link| +|---|---|---|---| +|Linux|docker|docker|[Docker_Linux](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Linux)| +|Linux|docker|containerd|[Docker_Linux_containerd](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Linux_containerd)| +|Linux|docker|crio|[Docker_Linux_crio](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Linux_crio)| +|Linux - arm64|docker|crio|[Docker_Linux_crio_arm64](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Linux_crio_arm64)| +|Linux - arm64|docker|docker|[Docker_Linux_docker_arm64](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Linux_docker_arm64)| +|Linux|kvm2|docker|[KVM_Linux](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=KVM_Linux)| +|Linux|kvm2|containerd|[KVM_Linux_containerd](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=KVM_Linux_containerd)| +|Linux|kvm2|crio|[KVM_Linux_crio](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=KVM_Linux_crio)| +|Linux|virtualbox|docker|[VirtualBox_Linux](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=VirtualBox_Linux)| +|Linux|none|docker|[none_Linux](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=none_Linux)| +|MacOS|docker|docker|[Docker_macOS](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_macOS)| +|MacOS|hyperkit|docker|[Hyperkit_macOS](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Hyperkit_macOS)| +|Windows|docker|docker|[Docker_Windows](https://storage.googleapis.com/minikube-flake-rate/flake_chart.html?env=Docker_Windows)| diff --git a/site/content/en/docs/contrib/tests.en.md b/site/content/en/docs/contrib/tests.en.md index d6dc8bf62cc2..5b2d70c0585c 100644 --- a/site/content/en/docs/contrib/tests.en.md +++ b/site/content/en/docs/contrib/tests.en.md @@ -96,6 +96,12 @@ check functionality of minikube after evaluating podman-env #### validateStartWithProxy makes sure minikube start respects the HTTP_PROXY environment variable +#### validateStartWithCustomCerts +makes sure minikube start respects the HTTPS_PROXY environment variable and works with custom certs +a proxy is started by calling the mitmdump binary in the background, then installing the certs generated by the binary +mitmproxy/dump creates the proxy at localhost at port 8080 +only runs on Github Actions for amd64 linux, otherwise validateStartWithProxy runs instead + #### validateAuditAfterStart makes sure the audit log contains the correct logging after minikube start diff --git a/site/content/en/docs/drivers/includes/vmware_macos_usage.inc b/site/content/en/docs/drivers/includes/vmware_macos_usage.inc index 75bc5ecdb3ea..8d13cb2dcedc 100644 --- a/site/content/en/docs/drivers/includes/vmware_macos_usage.inc +++ b/site/content/en/docs/drivers/includes/vmware_macos_usage.inc @@ -14,9 +14,12 @@ Otherwise: ```shell r=https://api.github.com/repos/machine-drivers/docker-machine-driver-vmware -curl -LO $(curl -s $r/releases/latest | grep -o 'http.*darwin_amd64' | head -n1) \ - && install docker-machine-driver-vmware_darwin_amd64 \ - /usr/local/bin/docker-machine-driver-vmware +d=docker-machine-driver-vmware_darwin_amd64 +u=$(curl -s $r/releases/latest | grep -o 'http.*Darwin_amd64.tar.gz' | head -n1) +mkdir $d \ + && (cd $d && curl -L $u > $d.tar.gz && tar -xf $d.tar.gz) \ + && install $d/docker-machine-driver-vmware /usr/local/bin/docker-machine-driver-vmware \ + && rm -rf $d ``` ## Usage diff --git a/site/content/en/docs/faq/_index.md b/site/content/en/docs/faq/_index.md index e9877ebe55ae..1bb557829f4a 100644 --- a/site/content/en/docs/faq/_index.md +++ b/site/content/en/docs/faq/_index.md @@ -18,6 +18,17 @@ Example: minikube start --kubernetes-version=v1.15.0 ``` +## How can I create more than one cluster with minikube? + +By default, `minikube start` creates a cluster named "minikube". If you would like to create a different cluster or change its name, you can use the `--profile` (or `-p`) flag, which will create a cluster with the specified name. Please note that you can have multiple clusters on the same machine. + +To see the list of your current clusters, run: +``` +minikube profile list +``` + +minikube profiles are meant to be isolated from one another, with their own settings and drivers. If you want to create a single cluster with multiple nodes, try the [multi-node feature]({{< ref "/docs/tutorials/multi_node" >}}) instead. + ## Docker Driver: How can I set minikube's cgroup manager? diff --git a/site/content/en/docs/start/_index.md b/site/content/en/docs/start/_index.md index 8bffff50e4ed..a303266173e6 100644 --- a/site/content/en/docs/start/_index.md +++ b/site/content/en/docs/start/_index.md @@ -32,35 +32,91 @@ Click on the buttons that describe your target platform. For other architectures {{% quiz_button option="x86-64" %}} {{% quiz_button option="ARM64" %}} {{% quiz_button option="ARMv7" %}} {{% quiz_button option="ppc64" %}} {{% quiz_button option="S390x" %}} {{% /quiz_row %}} -{{% quiz_row base="/Linux/x86-64" name="Installer type" %}} +{{% quiz_row base="/Linux/x86-64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/x86-64/Stable" name="Installer type" %}} {{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} {{% /quiz_row %}} -{{% quiz_row base="/Linux/ARM64" name="Installer type" %}} +{{% quiz_row base="/Linux/x86-64/Beta" name="Installer type" %}} {{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} {{% /quiz_row %}} -{{% quiz_row base="/Linux/ppc64" name="Installer type" %}} -{{% quiz_button option="Binary download" %}} +{{% quiz_row base="/Linux/ARM64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} {{% /quiz_row %}} -{{% quiz_row base="/Linux/S390x" name="Installer type" %}} -{{% quiz_button option="Binary download" %}} +{{% quiz_row base="/Linux/ARM64/Stable" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} {{% /quiz_row %}} -{{% quiz_row base="/Linux/ARMv7" name="Installer type" %}} -{{% quiz_button option="Binary download" %}} +{{% quiz_row base="/Linux/ARM64/Beta" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ppc64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ppc64/Stable" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ppc64/Beta" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/S390x" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/S390x/Stable" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/S390x/Beta" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ARMv7" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ARMv7/Stable" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Linux/ARMv7/Beta" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} {{% quiz_button option="Debian package" %}} {{% quiz_button option="RPM package" %}} {{% /quiz_row %}} {{% quiz_row base="/macOS" name="Architecture" %}} {{% quiz_button option="x86-64" %}} {{% quiz_button option="ARM64" %}} {{% /quiz_row %}} -{{% quiz_row base="/macOS/x86-64" name="Installer type" %}} +{{% quiz_row base="/macOS/x86-64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/macOS/x86-64/Stable" name="Installer type" %}} {{% quiz_button option="Binary download" %}} {{% quiz_button option="Homebrew" %}} {{% /quiz_row %}} -{{% quiz_row base="/macOS/ARM64" name="Installer type" %}} +{{% quiz_row base="/macOS/x86-64/Beta" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/macOS/ARM64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/macOS/ARM64/Stable" name="Installer type" %}} +{{% quiz_button option="Binary download" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/macOS/ARM64/Beta" name="Installer type" %}} {{% quiz_button option="Binary download" %}} {{% /quiz_row %}} @@ -68,102 +124,244 @@ Click on the buttons that describe your target platform. For other architectures {{% quiz_button option="x86-64" %}} {{% /quiz_row %}} -{{% quiz_row base="/Windows/x86-64" name="Installer type" %}} +{{% quiz_row base="/Windows/x86-64" name="Release type" %}} +{{% quiz_button option="Stable" %}} {{% quiz_button option="Beta" %}} +{{% /quiz_row %}} + +{{% quiz_row base="/Windows/x86-64/Stable" name="Installer type" %}} {{% quiz_button option=".exe download" %}} {{% quiz_button option="Windows Package Manager" %}} {{% quiz_button option="Chocolatey" %}} {{% /quiz_row %}} -{{% quiz_instruction id="/Linux/x86-64/Binary download" %}} +{{% quiz_row base="/Windows/x86-64/Beta" name="Installer type" %}} +{{% quiz_button option=".exe download" %}} +{{% /quiz_row %}} + +{{% quiz_instruction id="/Linux/x86-64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/x86-64/Debian package" %}} +{{% quiz_instruction id="/Linux/x86-64/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-amd64' | head -n1) +sudo install minikube-linux-amd64 /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/x86-64/Stable/Debian package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_amd64.deb sudo dpkg -i minikube_latest_amd64.deb ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/x86-64/RPM package" %}} +{{% quiz_instruction id="/Linux/x86-64/Beta/Debian package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube_.*_amd64.deb' | head -n1) +curl -L $u > minikube_beta_amd64.deb && sudo dpkg -i minikube_beta_amd64.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/x86-64/Stable/RPM package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm sudo rpm -Uvh minikube-latest.x86_64.rpm ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ARM64/Binary download" %}} +{{% quiz_instruction id="/Linux/x86-64/Beta/RPM package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-.*.x86_64.rpm' | head -n1) +curl -L $u > minikube-beta.x86_64.rpm && sudo rpm -Uvh minikube-beta.x86_64.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARM64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm64 sudo install minikube-linux-arm64 /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ARM64/Debian package" %}} +{{% quiz_instruction id="/Linux/ARM64/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-arm64' | head -n1) +sudo install minikube-linux-arm64 /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARM64/Stable/Debian package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_arm64.deb sudo dpkg -i minikube_latest_arm64.deb ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ARM64/RPM package" %}} +{{% quiz_instruction id="/Linux/ARM64/Beta/Debian package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube_.*_arm64.deb' | head -n1) +curl -L $u > minikube_beta_arm64.deb && sudo dpkg -i minikube_beta_arm64.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARM64/Stable/RPM package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.aarch64.rpm sudo rpm -Uvh minikube-latest.aarch64.rpm ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ppc64/Binary download" %}} +{{% quiz_instruction id="/Linux/ARM64/Beta/RPM package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-.*.aarch64.rpm' | head -n1) +curl -L $u > minikube-beta.aarch64.rpm && sudo rpm -Uvh minikube-beta.aarch64.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ppc64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-ppc64le sudo install minikube-linux-ppc64le /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ppc64/Debian package" %}} +{{% quiz_instruction id="/Linux/ppc64/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-ppc64le' | head -n1) +sudo install minikube-linux-ppc64le /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ppc64/Stable/Debian package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_ppc64le.deb sudo dpkg -i minikube_latest_ppc64le.deb ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ppc64/RPM package" %}} +{{% quiz_instruction id="/Linux/ppc64/Beta/Debian package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube_.*_ppc64le.deb' | head -n1) +curl -L $u > minikube_beta_ppc64le.deb && sudo dpkg -i minikube_beta_ppc64le.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ppc64/Stable/RPM package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.ppc64el.rpm sudo rpm -Uvh minikube-latest.ppc64el.rpm ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/S390x/Binary download" %}} +{{% quiz_instruction id="/Linux/ppc64/Beta/RPM package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-.*.ppc64el.rpm' | head -n1) +curl -L $u > minikube-beta.ppc64el.rpm && sudo rpm -Uvh minikube-beta.ppc64el.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/S390x/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-s390x sudo install minikube-linux-s390x /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/S390x/Debian package" %}} +{{% quiz_instruction id="/Linux/S390x/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-s390x' | head -n1) +sudo install minikube-linux-s390x /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/S390x/Stable/Debian package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_s390x.deb sudo dpkg -i minikube_latest_s390x.deb ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/S390x/RPM package" %}} +{{% quiz_instruction id="/Linux/S390x/Beta/Debian package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube_.*_s390x.deb' | head -n1) +curl -L $u > minikube_beta_s390x.deb && sudo dpkg -i minikube_beta_s390x.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/S390x/Stable/RPM package" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.s390x.rpm sudo rpm -Uvh minikube-latest.s390x.rpm ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Linux/ARMv7/Binary download" %}} +{{% quiz_instruction id="/Linux/S390x/Beta/RPM package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-.*.s390x.rpm' | head -n1) +curl -L $u > minikube-beta.s390x.rpm && sudo rpm -Uvh minikube-beta.s390x.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARMv7/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-arm sudo install minikube-linux-arm /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/macOS/x86-64/Homebrew" %}} +{{% quiz_instruction id="/Linux/ARMv7/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-linux-arm' | head -n1) +sudo install minikube-linux-arm /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARMv7/Stable/Debian package" %}} +```shell +curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube_latest_armhf.deb +sudo dpkg -i minikube_latest_armhf.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARMv7/Beta/Debian package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube_.*_armhf.deb' | head -n1) +curl -L $u > minikube_beta_armhf.deb && sudo dpkg -i minikube_beta_armhf.deb +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARMv7/Stable/RPM package" %}} +```shell +curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.armv7hl.rpm +sudo rpm -Uvh minikube-latest.armv7hl.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Linux/ARMv7/Beta/RPM package" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +u=$(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-.*.armv7hl.rpm' | head -n1) +curl -L $u > minikube-beta.armv7hl.rpm && sudo rpm -Uvh minikube-beta.armv7hl.rpm +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/macOS/x86-64/Stable/Homebrew" %}} If the [Brew Package Manager](https://brew.sh/) is installed: ```shell @@ -178,21 +376,37 @@ brew link minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/macOS/x86-64/Binary download" %}} +{{% quiz_instruction id="/macOS/x86-64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-amd64 sudo install minikube-darwin-amd64 /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/macOS/ARM64/Binary download" %}} +{{% quiz_instruction id="/macOS/x86-64/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-darwin-amd64' | head -n1) +sudo install minikube-darwin-amd64 /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/macOS/ARM64/Stable/Binary download" %}} ```shell curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-darwin-arm64 sudo install minikube-darwin-arm64 /usr/local/bin/minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Windows/x86-64/Windows Package Manager" %}} +{{% quiz_instruction id="/macOS/ARM64/Beta/Binary download" %}} +```shell +r=https://api.github.com/repos/kubernetes/minikube/releases +curl -LO $(curl -s $r | grep -o 'http.*download/v.*beta.*/minikube-darwin-arm64' | head -n1) +sudo install minikube-darwin-arm64 /usr/local/bin/minikube +``` +{{% /quiz_instruction %}} + +{{% quiz_instruction id="/Windows/x86-64/Stable/Windows Package Manager" %}} If the [Windows Package Manager](https://docs.microsoft.com/en-us/windows/package-manager/) is installed, use the following command to install minikube: ```shell @@ -200,7 +414,7 @@ winget install minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Windows/x86-64/Chocolatey" %}} +{{% quiz_instruction id="/Windows/x86-64/Stable/Chocolatey" %}} If the [Chocolatey Package Manager](https://chocolatey.org/) is installed, use the following command: ```shell @@ -208,14 +422,19 @@ choco install minikube ``` {{% /quiz_instruction %}} -{{% quiz_instruction id="/Windows/x86-64/.exe download" %}} +{{% quiz_instruction id="/Windows/x86-64/Stable/.exe download" %}} Download and run the stand-alone [minikube Windows installer](https://storage.googleapis.com/minikube/releases/latest/minikube-installer.exe). _If you used a CLI to perform the installation, you will need to close that CLI and open a new one before proceeding._ {{% /quiz_instruction %}} -{{% /card %}} +{{% quiz_instruction id="/Windows/x86-64/Beta/.exe download" %}} +Download and run the stand-alone minikube Windows installer from [the release page](https://github.com/kubernetes/minikube/releases). +_If you used a CLI to perform the installation, you will need to close that CLI and open a new one before proceeding._ +{{% /quiz_instruction %}} + +{{% /card %}}

2Start your cluster

diff --git a/site/layouts/shortcodes/quiz_instruction.html b/site/layouts/shortcodes/quiz_instruction.html index 1f516ecb4806..b02229e47537 100644 --- a/site/layouts/shortcodes/quiz_instruction.html +++ b/site/layouts/shortcodes/quiz_instruction.html @@ -3,9 +3,10 @@ {{ $os := index $selected 1 }} {{ $arch := index $selected 2 }} -{{ $installer := index $selected 3 }} +{{ $release := index $selected 3 }} +{{ $installer := index $selected 4 }}
-

To install minikube on {{ $arch }} {{ $os }} using {{ replace $installer "Binary" "binary" }}:

+

To install the latest minikube {{ lower $release }} release on {{ $arch }} {{ $os }} using {{ replace $installer "Binary" "binary" }}:

{{ .Inner }}
diff --git a/site/static/images/benchmarks/timeToK8s/v1.20.0.png b/site/static/images/benchmarks/timeToK8s/v1.20.0.png index 974ede799ab9..23ba2e7fa688 100644 Binary files a/site/static/images/benchmarks/timeToK8s/v1.20.0.png and b/site/static/images/benchmarks/timeToK8s/v1.20.0.png differ diff --git a/site/static/images/benchmarks/timeToK8s/v1.21.0.png b/site/static/images/benchmarks/timeToK8s/v1.21.0.png new file mode 100644 index 000000000000..9c1fd87848fb Binary files /dev/null and b/site/static/images/benchmarks/timeToK8s/v1.21.0.png differ diff --git a/test/integration/driver_install_or_update_test.go b/test/integration/driver_install_or_update_test.go index 018077e160da..24d16623489c 100644 --- a/test/integration/driver_install_or_update_test.go +++ b/test/integration/driver_install_or_update_test.go @@ -25,8 +25,7 @@ import ( "runtime" "testing" - "github.com/Azure/azure-sdk-for-go/tools/apidiff/ioext" - "github.com/blang/semver" + "github.com/blang/semver/v4" "k8s.io/minikube/pkg/minikube/driver/auxdriver" "k8s.io/minikube/pkg/minikube/localpath" @@ -290,12 +289,12 @@ func prepareTempMinikubeDirWithHyperkitDriver(name, driver string) (string, stri } // copy driver to temp bin testDriverPath := filepath.Join(mkBinDir, "docker-machine-driver-hyperkit") - if err = ioext.CopyFile(testDataDriverPath, testDriverPath, false); err != nil { + if err = CopyFile(testDataDriverPath, testDriverPath, false); err != nil { return "", "", fmt.Errorf("failed to setup current hyperkit driver: %v", err) } // try to copy cached files to the temp minikube folder to avoid downloading of iso and preloads - _ = ioext.CopyDir(filepath.Join(localpath.MakeMiniPath("cache")), filepath.Join(mkDir, "cache")) + _ = CopyDir(filepath.Join(localpath.MakeMiniPath("cache")), filepath.Join(mkDir, "cache")) // change permission to allow driver to be executable if err = os.Chmod(testDriverPath, 0755); err != nil { diff --git a/test/integration/functional_test.go b/test/integration/functional_test.go index b6ffd91d6566..2e0c65bd15d9 100644 --- a/test/integration/functional_test.go +++ b/test/integration/functional_test.go @@ -59,6 +59,11 @@ type validateFunc func(context.Context, *testing.T, string) // used in validateStartWithProxy and validateSoftStart var apiPortTest = 8441 +// Store the proxy session so we can clean it up at the end +var mitm *StartSession + +var runCorpProxy = GithubActionRunner() && runtime.GOOS == "linux" && !arm64Platform() + // TestFunctional are functionality tests which can safely share a profile in parallel func TestFunctional(t *testing.T) { @@ -99,13 +104,22 @@ func TestFunctional(t *testing.T) { if ctx.Err() == context.DeadlineExceeded { t.Fatalf("Unable to run more tests (deadline exceeded)") } + if tc.name == "StartWithProxy" && runCorpProxy { + tc.name = "StartWithCustomCerts" + tc.validator = validateStartWithCustomCerts + } t.Run(tc.name, func(t *testing.T) { tc.validator(ctx, t, profile) }) } }) - defer cleanupUnwantedImages(ctx, t, profile) + defer func() { + cleanupUnwantedImages(ctx, t, profile) + if runCorpProxy { + mitm.Stop(t) + } + }() // Parallelized tests t.Run("parallel", func(t *testing.T) { @@ -521,40 +535,26 @@ func validatePodmanEnv(ctx context.Context, t *testing.T, profile string) { // validateStartWithProxy makes sure minikube start respects the HTTP_PROXY environment variable func validateStartWithProxy(ctx context.Context, t *testing.T, profile string) { defer PostMortemLogs(t, profile) - srv, err := startHTTPProxy(t) if err != nil { t.Fatalf("failed to set up the test proxy: %s", err) } - // Use more memory so that we may reliably fit MySQL and nginx - memoryFlag := "--memory=4000" - // to avoid failure for mysq/pv on virtualbox on darwin on free github actions, - if GithubActionRunner() && VirtualboxDriver() { - memoryFlag = "--memory=6000" - } - // passing --api-server-port so later verify it didn't change in soft start. - startArgs := append([]string{"start", "-p", profile, memoryFlag, fmt.Sprintf("--apiserver-port=%d", apiPortTest), "--wait=all"}, StartArgs()...) - c := exec.CommandContext(ctx, Target(), startArgs...) - env := os.Environ() - env = append(env, fmt.Sprintf("HTTP_PROXY=%s", srv.Addr)) - env = append(env, "NO_PROXY=") - c.Env = env - rr, err := Run(t, c) - if err != nil { - t.Errorf("failed minikube start. args %q: %v", rr.Command(), err) - } - - want := "Found network options:" - if !strings.Contains(rr.Stdout.String(), want) { - t.Errorf("start stdout=%s, want: *%s*", rr.Stdout.String(), want) - } + startMinikubeWithProxy(ctx, t, profile, "HTTP_PROXY", srv.Addr) +} - want = "You appear to be using a proxy" - if !strings.Contains(rr.Stderr.String(), want) { - t.Errorf("start stderr=%s, want: *%s*", rr.Stderr.String(), want) +// validateStartWithCustomCerts makes sure minikube start respects the HTTPS_PROXY environment variable and works with custom certs +// a proxy is started by calling the mitmdump binary in the background, then installing the certs generated by the binary +// mitmproxy/dump creates the proxy at localhost at port 8080 +// only runs on Github Actions for amd64 linux, otherwise validateStartWithProxy runs instead +func validateStartWithCustomCerts(ctx context.Context, t *testing.T, profile string) { + defer PostMortemLogs(t, profile) + err := startProxyWithCustomCerts(ctx, t) + if err != nil { + t.Fatalf("failed to set up the test proxy: %s", err) } + startMinikubeWithProxy(ctx, t, profile, "HTTPS_PROXY", "127.0.0.1:8080") } // validateAuditAfterStart makes sure the audit log contains the correct logging after minikube start @@ -645,7 +645,11 @@ func validateMinikubeKubectl(ctx context.Context, t *testing.T, profile string) func validateMinikubeKubectlDirectCall(ctx context.Context, t *testing.T, profile string) { defer PostMortemLogs(t, profile) dir := filepath.Dir(Target()) - dstfn := filepath.Join(dir, "kubectl") + newName := "kubectl" + if runtime.GOOS == "windows" { + newName += ".exe" + } + dstfn := filepath.Join(dir, newName) err := os.Link(Target(), dstfn) if err != nil { @@ -1736,7 +1740,6 @@ users: if err := ioutil.WriteFile(tf.Name(), tc.kubeconfig, 0644); err != nil { t.Fatal(err) } - t.Cleanup(func() { os.Remove(tf.Name()) }) @@ -1756,6 +1759,79 @@ users: } } +// startProxyWithCustomCerts mimics starts a proxy with custom certs by using mitmproxy and installing its certs +func startProxyWithCustomCerts(ctx context.Context, t *testing.T) error { + // Download the mitmproxy bundle for mitmdump + _, err := Run(t, exec.CommandContext(ctx, "curl", "-LO", "https://snapshots.mitmproxy.org/6.0.2/mitmproxy-6.0.2-linux.tar.gz")) + if err != nil { + return errors.Wrap(err, "download mitmproxy tar") + } + defer func() { + err := os.Remove("mitmproxy-6.0.2-linux.tar.gz") + if err != nil { + t.Logf("remove tarball: %v", err) + } + }() + + mitmDir, err := ioutil.TempDir("", "") + if err != nil { + return errors.Wrap(err, "create temp dir") + } + + _, err = Run(t, exec.CommandContext(ctx, "tar", "xzf", "mitmproxy-6.0.2-linux.tar.gz", "-C", mitmDir)) + if err != nil { + return errors.Wrap(err, "untar mitmproxy tar") + } + + // Start mitmdump in the background, this will create the needed certs + // and provide the necessary proxy at 127.0.0.1:8080 + mitmRR, err := Start(t, exec.CommandContext(ctx, path.Join(mitmDir, "mitmdump"), "--set", fmt.Sprintf("confdir=%s", mitmDir))) + if err != nil { + return errors.Wrap(err, "starting mitmproxy") + } + + // Store it for cleanup later + mitm = mitmRR + + // Add a symlink from the cert to the correct directory + certFile := path.Join(mitmDir, "mitmproxy-ca-cert.pem") + // wait 15 seconds for the certs to show up + _, err = os.Stat(certFile) + tries := 1 + for os.IsNotExist(err) { + time.Sleep(1 * time.Second) + tries++ + if tries > 15 { + break + } + _, err = os.Stat(certFile) + } + if os.IsNotExist(err) { + return errors.Wrap(err, "cert files never showed up") + } + + destCertPath := path.Join("/etc/ssl/certs", "mitmproxy-ca-cert.pem") + symLinkCmd := fmt.Sprintf("ln -fs %s %s", certFile, destCertPath) + if _, err := Run(t, exec.CommandContext(ctx, "sudo", "/bin/bash", "-c", symLinkCmd)); err != nil { + return errors.Wrap(err, "cert symlink") + } + + // Add a symlink of the form {hash}.0 + rr, err := Run(t, exec.CommandContext(ctx, "openssl", "x509", "-hash", "-noout", "-in", certFile)) + if err != nil { + return errors.Wrap(err, "cert hashing") + } + stringHash := strings.TrimSpace(rr.Stdout.String()) + hashLink := path.Join("/etc/ssl/certs", fmt.Sprintf("%s.0", stringHash)) + + hashCmd := fmt.Sprintf("test -L %s || ln -fs %s %s", hashLink, destCertPath, hashLink) + if _, err := Run(t, exec.CommandContext(ctx, "sudo", "/bin/bash", "-c", hashCmd)); err != nil { + return errors.Wrap(err, "cert hash symlink") + } + + return nil +} + // startHTTPProxy runs a local http proxy and sets the env vars for it. func startHTTPProxy(t *testing.T) (*http.Server, error) { port, err := freeport.GetFreePort() @@ -1773,3 +1849,33 @@ func startHTTPProxy(t *testing.T) (*http.Server, error) { }(srv, t) return srv, nil } + +func startMinikubeWithProxy(ctx context.Context, t *testing.T, profile string, proxyEnv string, addr string) { + // Use more memory so that we may reliably fit MySQL and nginx + memoryFlag := "--memory=4000" + // to avoid failure for mysq/pv on virtualbox on darwin on free github actions, + if GithubActionRunner() && VirtualboxDriver() { + memoryFlag = "--memory=6000" + } + // passing --api-server-port so later verify it didn't change in soft start. + startArgs := append([]string{"start", "-p", profile, memoryFlag, fmt.Sprintf("--apiserver-port=%d", apiPortTest), "--wait=all"}, StartArgs()...) + c := exec.CommandContext(ctx, Target(), startArgs...) + env := os.Environ() + env = append(env, fmt.Sprintf("%s=%s", proxyEnv, addr)) + env = append(env, "NO_PROXY=") + c.Env = env + rr, err := Run(t, c) + if err != nil { + t.Errorf("failed minikube start. args %q: %v", rr.Command(), err) + } + + want := "Found network options:" + if !strings.Contains(rr.Stdout.String(), want) { + t.Errorf("start stdout=%s, want: *%s*", rr.Stdout.String(), want) + } + + want = "You appear to be using a proxy" + if !strings.Contains(rr.Stderr.String(), want) { + t.Errorf("start stderr=%s, want: *%s*", rr.Stderr.String(), want) + } +} diff --git a/test/integration/helpers_test.go b/test/integration/helpers_test.go index da436f79cbfb..5e1fa1fc9e0b 100644 --- a/test/integration/helpers_test.go +++ b/test/integration/helpers_test.go @@ -26,8 +26,11 @@ import ( "bufio" "bytes" "context" + "errors" "fmt" + "io" "io/ioutil" + "os" "os/exec" "path/filepath" "strconv" @@ -557,3 +560,113 @@ func testCpCmd(ctx context.Context, t *testing.T, profile string, node string) { t.Errorf("/testdata/cp-test.txt content mismatch (-want +got):\n%s", diff) } } + +// CopyFile copies the specified source file to the specified destination file. +// Specify true for overwrite to overwrite the destination file if it already exits. +func CopyFile(src, dst string, overwrite bool) error { + srcFile, err := os.Open(src) + if err != nil { + return err + } + defer srcFile.Close() + + if !overwrite { + // check if the file exists, if it does then return an error + _, err := os.Stat(dst) + if err != nil && !os.IsNotExist(err) { + return errors.New("won't overwrite destination file") + } + } + + dstFile, err := os.Create(dst) + if err != nil { + return err + } + defer dstFile.Close() + + _, err = io.Copy(dstFile, srcFile) + if err != nil { + return err + } + + // flush the buffer + err = dstFile.Sync() + if err != nil { + return err + } + + // copy file permissions + srcInfo, err := os.Stat(src) + if err != nil { + return err + } + + err = os.Chmod(dst, srcInfo.Mode()) + if err != nil { + return err + } + + return nil +} + +// CopyDir recursively copies the specified source directory tree to the +// specified destination. The destination directory must not exist. Any +// symlinks under src are ignored. +func CopyDir(src, dst string) error { + src = filepath.Clean(src) + dst = filepath.Clean(dst) + + // verify that src is a directory + srcInfo, err := os.Stat(src) + if err != nil { + return err + } + if !srcInfo.IsDir() { + return fmt.Errorf("source is not a directory") + } + + // now verify that dst doesn't exist + _, err = os.Stat(dst) + if err != nil && !os.IsNotExist(err) { + return err + } + if err == nil { + return fmt.Errorf("destination directory already exists") + } + + err = os.MkdirAll(dst, srcInfo.Mode()) + if err != nil { + return err + } + + // get the collection of directory entries under src. + // for each entry build its corresponding path under dst. + entries, err := ioutil.ReadDir(src) + if err != nil { + return err + } + + for _, entry := range entries { + // skip symlinks + if entry.Mode()&os.ModeSymlink != 0 { + continue + } + + srcPath := filepath.Join(src, entry.Name()) + dstPath := filepath.Join(dst, entry.Name()) + + if entry.IsDir() { + err = CopyDir(srcPath, dstPath) + if err != nil { + return err + } + } else { + err = CopyFile(srcPath, dstPath, true) + if err != nil { + return err + } + } + } + + return nil +} diff --git a/test/integration/main_test.go b/test/integration/main_test.go index 3e1003df0b08..c259933befa2 100644 --- a/test/integration/main_test.go +++ b/test/integration/main_test.go @@ -97,6 +97,16 @@ func setMaxParallelism() { // Each "minikube start" consumes up to 2 cores, though the average usage is somewhat lower limit := int(math.Floor(float64(maxp) / 1.75)) + // Windows and MacOS tests were failing from timeouts due to too much parallelism + if runtime.GOOS == "windows" { + limit /= 2 + } + + // Hardcode limit to 2 for macOS + if runtime.GOOS == "darwin" { + limit = 2 + } + fmt.Fprintf(os.Stderr, "Found %d cores, limiting parallelism with --test.parallel=%d\n", maxp, limit) if err := flag.Set("test.parallel", strconv.Itoa(limit)); err != nil { fmt.Fprintf(os.Stderr, "Unable to set test.parallel: %v\n", err) diff --git a/translations/fr.json b/translations/fr.json index d5b484734497..f2a67124dd4f 100644 --- a/translations/fr.json +++ b/translations/fr.json @@ -702,7 +702,7 @@ "Unable to find control plane": "Impossible de trouver le plan de contrôle", "Unable to generate docs": "Impossible de générer des documents", "Unable to generate the documentation. Please ensure that the path specified is a directory, exists \u0026 you have permission to write to it.": "Impossible de générer la documentation. Veuillez vous assurer que le chemin spécifié est un répertoire, existe \u0026 vous avez la permission d'y écrire.", - "Unable to get CPU info: {{.err}}": "", + "Unable to get CPU info: {{.err}}": "Impossible d'obtenir les informations sur le processeur : {{.err}}", "Unable to get bootstrapper: {{.error}}": "Impossible d'obtenir l'amorceur : {{.error}}", "Unable to get command runner": "Impossible d'obtenir le lanceur de commandes", "Unable to get control plane status: {{.error}}": "Impossible d'obtenir l'état du plan de contrôle : {{.error}}", @@ -949,4 +949,4 @@ "{{.profile}} profile is not valid: {{.err}}": "Le profil {{.profile}} n'est pas valide : {{.err}}", "{{.type}} is not yet a supported filesystem. We will try anyways!": "{{.type}} n'est pas encore un système de fichiers pris en charge. Nous essaierons quand même !", "{{.url}} is not accessible: {{.error}}": "{{.url}} n'est pas accessible : {{.error}}" -} +} \ No newline at end of file