diff --git a/Makefile b/Makefile index 008050da0eaf..1c9c5ea842a6 100644 --- a/Makefile +++ b/Makefile @@ -1098,11 +1098,15 @@ release-alias-tag: ## Add the release alias tag to the last build tag .PHONY: release-notes-tool release-notes-tool: - go build -o bin/notes hack/tools/release/notes/main.go + go build -o bin/notes -tags tools sigs.k8s.io/cluster-api/hack/tools/release/notes + +.PHONY: test-release-notes-tool +test-release-notes-tool: + go test -v -tags tools,integration sigs.k8s.io/cluster-api/hack/tools/release/notes .PHONY: release-weekly-update-tool release-weekly-update-tool: - go build -o bin/weekly hack/tools/release/weekly/main.go + go build -o bin/weekly -tags tools sigs.k8s.io/cluster-api/hack/tools/release/weekly .PHONY: promote-images promote-images: $(KPROMO) diff --git a/hack/tools/go.mod b/hack/tools/go.mod index 515dd384e706..11271bca28d2 100644 --- a/hack/tools/go.mod +++ b/hack/tools/go.mod @@ -9,6 +9,7 @@ replace sigs.k8s.io/cluster-api/test => ../../test require ( cloud.google.com/go/storage v1.35.1 github.com/blang/semver/v4 v4.0.0 + github.com/onsi/gomega v1.30.0 github.com/pkg/errors v0.9.1 github.com/spf13/pflag v1.0.5 github.com/valyala/fastjson v1.6.4 @@ -19,6 +20,7 @@ require ( k8s.io/client-go v0.28.4 k8s.io/klog/v2 v2.100.1 k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 + k8s.io/kubectl v0.28.4 k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 sigs.k8s.io/cluster-api v0.0.0-00010101000000-000000000000 sigs.k8s.io/cluster-api/test v0.0.0-00010101000000-000000000000 @@ -34,6 +36,7 @@ require ( cloud.google.com/go/compute v1.23.1 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect cloud.google.com/go/iam v1.1.3 // indirect + github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect github.com/MakeNowJust/heredoc v1.0.0 // indirect github.com/Masterminds/goutils v1.1.1 // indirect github.com/Masterminds/semver/v3 v3.2.0 // indirect @@ -45,8 +48,10 @@ require ( github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 // indirect github.com/beorn7/perks v1.0.1 // indirect github.com/cespare/xxhash/v2 v2.2.0 // indirect + github.com/chai2010/gettext-go v1.0.2 // indirect github.com/cloudflare/circl v1.3.3 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect + github.com/daviddengcn/go-colortext v1.0.0 // indirect github.com/distribution/reference v0.5.0 // indirect github.com/docker/distribution v2.8.3+incompatible // indirect github.com/docker/docker v24.0.7+incompatible // indirect @@ -56,7 +61,10 @@ require ( github.com/emicklei/go-restful/v3 v3.11.0 // indirect github.com/evanphx/json-patch v5.6.0+incompatible // indirect github.com/evanphx/json-patch/v5 v5.7.0 // indirect + github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d // indirect + github.com/fatih/camelcase v1.0.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect + github.com/fvbommel/sortorder v1.1.0 // indirect github.com/go-errors/errors v1.4.2 // indirect github.com/go-logr/logr v1.3.0 // indirect github.com/go-openapi/jsonpointer v0.19.6 // indirect @@ -66,6 +74,7 @@ require ( github.com/gogo/protobuf v1.3.2 // indirect github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect github.com/golang/protobuf v1.5.3 // indirect + github.com/google/btree v1.0.1 // indirect github.com/google/cel-go v0.16.1 // indirect github.com/google/gnostic-models v0.6.8 // indirect github.com/google/go-cmp v0.6.0 // indirect @@ -73,41 +82,56 @@ require ( github.com/google/go-querystring v1.1.0 // indirect github.com/google/gofuzz v1.2.0 // indirect github.com/google/s2a-go v0.1.7 // indirect + github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.4.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect + github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 // indirect github.com/hashicorp/hcl v1.0.0 // indirect github.com/huandu/xstrings v1.3.3 // indirect github.com/imdario/mergo v0.3.13 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect + github.com/jonboulle/clockwork v0.2.2 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect + github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de // indirect + github.com/lithammer/dedent v1.1.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/go-wordwrap v1.0.1 // indirect github.com/mitchellh/mapstructure v1.5.0 // indirect github.com/mitchellh/reflectwalk v1.0.2 // indirect + github.com/moby/spdystream v0.2.0 // indirect + github.com/moby/term v0.0.0-20221205130635-1aeaba878587 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect - github.com/onsi/gomega v1.30.0 // indirect + github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect github.com/opencontainers/go-digest v1.0.0 // indirect github.com/opencontainers/image-spec v1.1.0-rc2 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect + github.com/peterbourgon/diskv v2.0.1+incompatible // indirect github.com/prometheus/client_golang v1.17.0 // indirect github.com/prometheus/client_model v0.4.1-0.20230718164431-9a2bf3000d16 // indirect github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.1 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/sagikazarmark/locafero v0.3.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shopspring/decimal v1.3.1 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/spf13/afero v1.10.0 // indirect github.com/spf13/cast v1.5.1 // indirect + github.com/spf13/cobra v1.8.0 // indirect github.com/spf13/viper v1.17.0 // indirect github.com/stoewer/go-strcase v1.2.0 // indirect github.com/subosito/gotenv v1.6.0 // indirect + github.com/xlab/treeprint v1.2.0 // indirect go.opencensus.io v0.24.0 // indirect + go.starlark.net v0.0.0-20230525235612-a134d8f9ddca // indirect go.uber.org/multierr v1.11.0 // indirect golang.org/x/crypto v0.15.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect @@ -133,9 +157,13 @@ require ( gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect k8s.io/apiserver v0.28.4 // indirect + k8s.io/cli-runtime v0.28.4 // indirect k8s.io/cluster-bootstrap v0.28.4 // indirect k8s.io/component-base v0.28.4 // indirect + k8s.io/component-helpers v0.28.4 // indirect + k8s.io/metrics v0.28.4 // indirect sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect + sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 // indirect sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect ) diff --git a/hack/tools/go.sum b/hack/tools/go.sum index 6b2d947a2bd6..d3ca2a26fa0f 100644 --- a/hack/tools/go.sum +++ b/hack/tools/go.sum @@ -47,6 +47,7 @@ cloud.google.com/go/storage v1.35.1 h1:B59ahL//eDfx2IIKFBeT5Atm9wnNmj3+8xG/W4WB/ cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 h1:UQHMgLO+TxOElx5B5HZ4hJQsoJ/PvUvKRhJHDQXO8P8= +github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/MakeNowJust/heredoc v1.0.0 h1:cXCdzVdstXyiTqTvfqk9SDHpKNjxuom+DOlyEeQ4pzQ= @@ -65,6 +66,7 @@ github.com/adrg/xdg v0.4.0 h1:RzRqFcjH4nE5C6oTAxhBtoE2IRyjBSa62SCbyPidvls= github.com/adrg/xdg v0.4.0/go.mod h1:N6ag73EX4wyxeaoeHctc1mas01KZgsj5tYiAIwqJE/E= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df h1:7RFfzj4SSt6nnvCPbCqijJi1nWCd+TqAT3bYCStRC18= github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df/go.mod h1:pSwJ0fSY5KhvocuWSx4fz3BA8OrA1bQn+K1Eli3BRwM= +github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535 h1:4daAzAu0S6Vi7/lbWECcX0j45yZReDZ56BQsrVBOEEY= github.com/asaskevich/govalidator v0.0.0-20200428143746-21a406dcc535/go.mod h1:oGkLhpf+kjZl6xBf758TQhh5XrAeiJv/7FRz/2spLIg= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= @@ -75,6 +77,8 @@ github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7N github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.2.0 h1:DC2CZ1Ep5Y4k3ZQ899DldepgrayRUGE6BBZ/cd9Cj44= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chai2010/gettext-go v1.0.2 h1:1Lwwip6Q2QGsAdl/ZKPCwTe9fe0CjlUbqj5bFNSjIRk= +github.com/chai2010/gettext-go v1.0.2/go.mod h1:y+wnP2cHYaVj19NZhYKAwEMH2CI1gNHeQQ+5AjwawxA= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= @@ -87,11 +91,15 @@ github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnht github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/coredns/caddy v1.1.0 h1:ezvsPrT/tA/7pYDBZxu0cT0VmWk75AfIaf6GSYCNMf0= github.com/coredns/corefile-migration v1.0.21 h1:W/DCETrHDiFo0Wj03EyMkaQ9fwsmSgqTCQDHpceaSsE= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/creack/pty v1.1.18 h1:n56/Zwd5o6whRC5PMGretI4IdRLlmBXYNjScPaBgsbY= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/daviddengcn/go-colortext v1.0.0 h1:ANqDyC0ys6qCSvuEK7l3g5RaehL/Xck9EX8ATG8oKsE= +github.com/daviddengcn/go-colortext v1.0.0/go.mod h1:zDqEI5NVUop5QPpVJUxE9UO10hRnmkD5G4Pmri9+m4c= github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0= github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= @@ -116,9 +124,15 @@ github.com/evanphx/json-patch v5.6.0+incompatible h1:jBYDEEiFBPxA0v50tFdvOzQQTCv github.com/evanphx/json-patch v5.6.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= github.com/evanphx/json-patch/v5 v5.7.0 h1:nJqP7uwL84RJInrohHfW0Fx3awjbm8qZeFv0nW9SYGc= github.com/evanphx/json-patch/v5 v5.7.0/go.mod h1:VNkHZ/282BpEyt/tObQO8s5CMPmYYq14uClGH4abBuQ= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d h1:105gxyaGwCFad8crR9dcMQWvV9Hvulu6hwUh4tWPJnM= +github.com/exponent-io/jsonpath v0.0.0-20151013193312-d6023ce2651d/go.mod h1:ZZMPRZwes7CROmyNKgQzC3XPs6L/G2EJLHddWejkmf4= +github.com/fatih/camelcase v1.0.0 h1:hxNvNX/xYBp0ovncs8WyWZrOrpBNub/JfaMvbURyft8= +github.com/fatih/camelcase v1.0.0/go.mod h1:yN2Sb0lFhZJUdVvtELVWefmrXpuZESvPmqwoZc+/fpc= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw= +github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -169,8 +183,15 @@ github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/golang/protobuf v1.5.3 h1:KhyjKVUg7Usr/dYsdSqoFveMYd5ko72D+zANwlG1mmg= github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golangplus/bytes v0.0.0-20160111154220-45c989fe5450/go.mod h1:Bk6SMAONeMXrxql8uvOKuAZSu8aM5RUGv+1C6IJaEho= +github.com/golangplus/bytes v1.0.0/go.mod h1:AdRaCFwmc/00ZzELMWb01soso6W1R/++O1XL80yAn+A= +github.com/golangplus/fmt v1.0.0/go.mod h1:zpM0OfbMCjPtd2qkTD/jX2MgiFCqklhSUFyDW44gVQE= +github.com/golangplus/testing v1.0.0 h1:+ZeeiKZENNOMkTTELoSySazi+XaEhVO0mb+eanrSEUQ= +github.com/golangplus/testing v1.0.0/go.mod h1:ZDreixUV3YzhoVraIDyOzHrr76p6NUh6k/pPg/Q3gYA= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/btree v1.0.1 h1:gK4Kx5IaGY9CD5sPJ36FHiBJ6ZXl0kilRiiCj+jdYp4= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= github.com/google/cel-go v0.16.1 h1:3hZfSNiAU3KOiNtxuFXVp5WFy4hf/Ly3Sa4/7F8SXNo= github.com/google/cel-go v0.16.1/go.mod h1:HXZKzB0LXqer5lHHgfWAnlYwJaQBDKMjxjulNQzhwhY= github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= @@ -215,6 +236,8 @@ github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 h1:K6RDEckDVWvDI9JAJY github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.7 h1:60BLSyTrOV4/haCDW4zb1guZItoSq8foHCXrAnjBo/o= github.com/google/s2a-go v0.1.7/go.mod h1:50CgR4k1jNlWBu4UfS4AcfhVe1r6pdZPygJ3R8F0Qdw= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= 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= github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= @@ -226,6 +249,9 @@ github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5m github.com/googleapis/gax-go/v2 v2.12.0 h1:A+gCJKdRfqXkr+BIRGtZLibNXf0m1f9E4HG56etFpas= github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qKpsEkdD5+I6QGU= github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7 h1:pdN6V1QBWetyv/0+wjACpqVH+eVULgEjkurDLq3goeM= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= @@ -237,6 +263,10 @@ github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1: github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= github.com/imdario/mergo v0.3.13 h1:lFzP57bqS/wsqKssCGmtLAb8A0wKjLGrve2q3PPVcBk= github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/jonboulle/clockwork v0.2.2 h1:UOGuzwb1PwsrDAObMuhUnj0p5ULPj8V/xJ7Kx9qUBdQ= +github.com/jonboulle/clockwork v0.2.2/go.mod h1:Pkfl5aHPm1nk2H9h0bjmnJD/BcgbGXUBGnn1kMkgxc8= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= @@ -253,6 +283,10 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de h1:9TO3cAIGXtEhnIaL+V+BEER86oLrvS+kWobKpbJuye0= +github.com/liggitt/tabwriter v0.0.0-20181228230101-89fcab3d43de/go.mod h1:zAbeS9B/r2mtpb6U+EI2rYA5OAXxsYw6wTamcNW+zcE= +github.com/lithammer/dedent v1.1.0 h1:VNzHMVCBNG1j0fh3OrsFRkVUwStdDArbgBWoPAffktY= +github.com/lithammer/dedent v1.1.0/go.mod h1:jrXYCQtgg0nJiN+StA2KgR7w6CiQNv9Fd/Z9BP0jIOc= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0= @@ -262,20 +296,29 @@ github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfr github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-wordwrap v1.0.1 h1:TLuKupo69TCn6TQSyGxwI1EblZZEsQ0vMlAFQflz0v0= +github.com/mitchellh/go-wordwrap v1.0.1/go.mod h1:R62XHJLzvMFRBbcrT7m7WgmE1eOyTSsCt+hzestvNj0= github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +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/term v0.0.0-20221205130635-1aeaba878587 h1:HfkjXDfhgVaN5rmueG8cL8KKeFNecRCXFhaJ2qZ5SKA= +github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0= +github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4= github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= github.com/onsi/ginkgo/v2 v2.13.1 h1:LNGfMbR2OVGBfXjvRZIZ2YCTQdGKtPLvuI1rMCCj3OU= @@ -287,6 +330,8 @@ github.com/opencontainers/image-spec v1.1.0-rc2 h1:2zx/Stx4Wc5pIPDvIxHXvXtQFW/7X github.com/opencontainers/image-spec v1.1.0-rc2/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= +github.com/peterbourgon/diskv v2.0.1+incompatible h1:UBdAOUP5p4RWqPBg048CAvpKN+vxiaj6gdUUzhl4XmI= +github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= @@ -303,10 +348,13 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.10.0 h1:TMyTOH3F/DB16zRVcYyreMH6GnZZrwQVAoYjRBZyWFQ= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= +github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0= github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= github.com/shopspring/decimal v1.3.1 h1:2Usl1nmF/WZucqkFZhnfFYxxxu8LG21F6nPQBE5gKV8= github.com/shopspring/decimal v1.3.1/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= @@ -318,6 +366,8 @@ github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= 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.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= @@ -326,6 +376,7 @@ github.com/stoewer/go-strcase v1.2.0 h1:Z2iHWqGXH00XYgqDmNgQbIBxf3wrNq0F3feEy0ai github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= @@ -341,6 +392,8 @@ github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8 github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU= github.com/valyala/fastjson v1.6.4 h1:uAUNq9Z6ymTgGhcm0UynUAB6tlbakBrz6CQFax3BXVQ= github.com/valyala/fastjson v1.6.4/go.mod h1:CLCAqky6SMuOcxStkYQvblddUtoRxhYMGLrsQns1aXY= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -354,6 +407,8 @@ go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca h1:VdD38733bfYv5tUZwEIskMM93VanwNIi5bIKnDrJdEY= +go.starlark.net v0.0.0-20230525235612-a134d8f9ddca/go.mod h1:jxU+3+j+71eXOW14274+SmmuW82qJzl6iZSeqEtTGds= go.uber.org/goleak v1.2.1 h1:NBol2c7O1ZokfZ0LEU9K6Whx/KnwvepVetCUhtKja4A= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= @@ -505,9 +560,11 @@ golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/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-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -515,6 +572,7 @@ golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= +golang.org/x/term v0.0.0-20220526004731-065cf7ba2467/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc= golang.org/x/term v0.14.0 h1:LGK9IlZ8T9jvdy6cTdfKUCltatMFOehAQo9SRC46UQ8= golang.org/x/term v0.14.0/go.mod h1:TySc+nGkYR6qt8km8wUhuFRTVSMIX3XPR58y2lC8vww= @@ -732,16 +790,24 @@ k8s.io/apimachinery v0.28.4 h1:zOSJe1mc+GxuMnFzD4Z/U1wst50X28ZNsn5bhgIIao8= k8s.io/apimachinery v0.28.4/go.mod h1:wI37ncBvfAoswfq626yPTe6Bz1c22L7uaJ8dho83mgg= k8s.io/apiserver v0.28.4 h1:BJXlaQbAU/RXYX2lRz+E1oPe3G3TKlozMMCZWu5GMgg= k8s.io/apiserver v0.28.4/go.mod h1:Idq71oXugKZoVGUUL2wgBCTHbUR+FYTWa4rq9j4n23w= +k8s.io/cli-runtime v0.28.4 h1:IW3aqSNFXiGDllJF4KVYM90YX4cXPGxuCxCVqCD8X+Q= +k8s.io/cli-runtime v0.28.4/go.mod h1:MLGRB7LWTIYyYR3d/DOgtUC8ihsAPA3P8K8FDNIqJ0k= k8s.io/client-go v0.28.4 h1:Np5ocjlZcTrkyRJ3+T3PkXDpe4UpatQxj85+xjaD2wY= k8s.io/client-go v0.28.4/go.mod h1:0VDZFpgoZfelyP5Wqu0/r/TRYcLYuJ2U1KEeoaPa1N4= k8s.io/cluster-bootstrap v0.28.4 h1:4MKNy1Qd9QY7pl47rSMGIORF+tm3CUaqC1M8U9bjn4Q= k8s.io/cluster-bootstrap v0.28.4/go.mod h1:/c4ro/R4yf4EtJgFgFtvnHkbDOHwubeKJXh5R1c89Bc= k8s.io/component-base v0.28.4 h1:c/iQLWPdUgI90O+T9TeECg8o7N3YJTiuz2sKxILYcYo= k8s.io/component-base v0.28.4/go.mod h1:m9hR0uvqXDybiGL2nf/3Lf0MerAfQXzkfWhUY58JUbU= +k8s.io/component-helpers v0.28.4 h1:+X9VXT5+jUsRdC26JyMZ8Fjfln7mSjgumafocE509C4= +k8s.io/component-helpers v0.28.4/go.mod h1:8LzMalOQ0K10tkBJWBWq8h0HTI9HDPx4WT3QvTFn9Ro= k8s.io/klog/v2 v2.100.1 h1:7WCHKK6K8fNhTqfBhISHQ97KrnJNFZMcQvKp7gP/tmg= k8s.io/klog/v2 v2.100.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 h1:LyMgNKD2P8Wn1iAwQU5OhxCKlKJy0sHc+PcDwFB24dQ= k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9/go.mod h1:wZK2AVp1uHCp4VamDVgBP2COHZjqD1T68Rf0CM3YjSM= +k8s.io/kubectl v0.28.4 h1:gWpUXW/T7aFne+rchYeHkyB8eVDl5UZce8G4X//kjUQ= +k8s.io/kubectl v0.28.4/go.mod h1:CKOccVx3l+3MmDbkXtIUtibq93nN2hkDR99XDCn7c/c= +k8s.io/metrics v0.28.4 h1:u36fom9+6c8jX2sk8z58H0hFaIUfrPWbXIxN7GT2blk= +k8s.io/metrics v0.28.4/go.mod h1:bBqAJxH20c7wAsTQxDXOlVqxGMdce49d7WNr1WeaLac= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 h1:qY1Ad8PODbnymg2pRbkyMT/ylpTrCM8P2RJ0yroCyIk= k8s.io/utils v0.0.0-20230406110748-d93618cff8a2/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= @@ -757,6 +823,8 @@ sigs.k8s.io/kubebuilder/docs/book/utils v0.0.0-20211028165026-57688c578b5d h1:KL sigs.k8s.io/kubebuilder/docs/book/utils v0.0.0-20211028165026-57688c578b5d/go.mod h1:NRdZafr4zSCseLQggdvIMXa7umxf+Q+PJzrj3wFwiGE= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3 h1:XX3Ajgzov2RKUdc5jW3t5jwY7Bo7dcRm+tFxT+NfgY0= sigs.k8s.io/kustomize/api v0.13.5-0.20230601165947-6ce0bf390ce3/go.mod h1:9n16EZKMhXBNSiUC5kSdFQJkdH3zbxS/JoO619G1VAY= +sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3 h1:vq2TtoDcQomhy7OxXLUOzSbHMuMYq0Bjn93cDtJEdKw= +sigs.k8s.io/kustomize/kustomize/v5 v5.0.4-0.20230601165947-6ce0bf390ce3/go.mod h1:/d88dHCvoy7d0AKFT0yytezSGZKjsZBVs9YTkBHSGFk= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3 h1:W6cLQc5pnqM7vh3b7HvGNfXrJ/xL6BDMS0v1V/HHg5U= sigs.k8s.io/kustomize/kyaml v0.14.3-0.20230601165947-6ce0bf390ce3/go.mod h1:JWP1Fj0VWGHyw3YUPjXSQnRnrwezrZSrApfX5S0nIag= sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kFxnAMREiWFE= diff --git a/hack/tools/release/notes/main.go b/hack/tools/release/notes/main.go index ad8f06393f16..d4163c6ae2d0 100644 --- a/hack/tools/release/notes/main.go +++ b/hack/tools/release/notes/main.go @@ -293,7 +293,7 @@ func run() int { for result := range results { if result.err != nil { fmt.Println(result.err) - os.Exit(0) + return -1 } if result.prEntry == nil || result.prEntry.title == "" { diff --git a/hack/tools/release/notes/release_notes_integration_test.go b/hack/tools/release/notes/release_notes_integration_test.go new file mode 100644 index 000000000000..457f1d19fcf8 --- /dev/null +++ b/hack/tools/release/notes/release_notes_integration_test.go @@ -0,0 +1,131 @@ +//go:build tools && integration + +/* +Copyright 2023 The Kubernetes Authors. + +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. +*/ + +package main + +import ( + "flag" + "fmt" + "io" + "os" + "os/exec" + "testing" + + . "github.com/onsi/gomega" + "k8s.io/kubectl/pkg/cmd" +) + +func TestReleaseNotesIntegration(t *testing.T) { + testCases := []struct { + name string + previousRelease string + releaseBranchForTest string + expected string + }{ + { + // This tests a patch release computing the PR list from previous patch tag + // to HEAD. Since v1.3 is out of support, we won't be backporting new PRs + // so the branch should remain untouched and the test valid. + name: "new patch", + previousRelease: "v1.3.9", + releaseBranchForTest: "release-1.3", + expected: "test/golden/v1.3.10.md", + }, + { + // The release notes command computes everything from last tag + // to HEAD. Hence if we use the head of release-1.5, this test will + // become invalid everytime we backport some PR to release branch release-1.5. + // Here we cheat a little by poiting to worktree to v1.5.0, which is the + // release that this test is simulating, so it should not exist yet. But + // it represents accurately the HEAD of release-1.5 when we released v1.5.0. + name: "new minor", + previousRelease: "v1.4.0", + releaseBranchForTest: "v1.5.0", + expected: "test/golden/v1.5.0.md", + }, + } + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + setupNotesTest(t, tc.previousRelease, tc.releaseBranchForTest) + g := NewWithT(t) + + expectedOutput, err := os.ReadFile(tc.expected) + g.Expect(err).ToNot(HaveOccurred()) + + orgCurrentDir, err := os.Getwd() + g.Expect(err).To(Succeed()) + t.Cleanup(func() { + g.Expect(os.Chdir(orgCurrentDir)).To(Succeed()) + }) + g.Expect(os.Chdir(tc.releaseBranchForTest)).To(Succeed()) + + // a two workers config is slow but it guarantees no rate limiting + os.Args = []string{os.Args[0], "--from", tc.previousRelease, "--workers", "2"} + + old := os.Stdout // keep backup of the real stdout to restore later + r, w, err := os.Pipe() + g.Expect(err).To(Succeed()) + os.Stdout = w + + g.Expect(runReleaseNotesCmd()).To(Succeed()) + + w.Close() + output, err := io.ReadAll(r) + g.Expect(err).NotTo(HaveOccurred()) + os.Stdout = old + + g.Expect(string(output)).To(BeComparableTo(string(expectedOutput))) + }) + } +} + +func runReleaseNotesCmd() error { + // we replicate the main function here so we don't get os.Exit + flag.Parse() + if code := run(); code != 0 { + return fmt.Errorf("release notes command exited with code %d", code) + } + + return nil +} + +func setupNotesTest(tb testing.TB, previousRelease, releaseBranchForTest string) { + g := NewWithT(tb) + + _, err := os.Stat(releaseBranchForTest) + if os.IsNotExist(err) { + runCommand(tb, exec.Command("git", "worktree", "add", releaseBranchForTest)) + } else { + g.Expect(err).To(Succeed()) + } + + pull := exec.Command("git", "pull", "upstream", releaseBranchForTest) + pull.Dir = releaseBranchForTest + runCommand(tb, pull) + + tb.Cleanup(func() { + runCommand(tb, cmd.Command("git", "worktree", "remove", releaseBranchForTest)) + }) +} + +func runCommand(tb testing.TB, cmd *exec.Cmd) { + out, err := cmd.CombinedOutput() + if err != nil { + tb.Fatalf("Command %s failed: %s", cmd.Args, string(out)) + } +} diff --git a/hack/tools/release/notes/test/golden/v1.3.10.md b/hack/tools/release/notes/test/golden/v1.3.10.md new file mode 100644 index 000000000000..282850019b8f --- /dev/null +++ b/hack/tools/release/notes/test/golden/v1.3.10.md @@ -0,0 +1,34 @@ +## 👌 Kubernetes version support + +- Management Cluster: v1.**X**.x -> v1.**X**.x +- Workload Cluster: v1.**X**.x -> v1.**X**.x + +[More information about version support can be found here](https://cluster-api.sigs.k8s.io/reference/versions.html) + +## Highlights + +* REPLACE ME + +## Deprecation Warning + +REPLACE ME: A couple sentences describing the deprecation, including links to docs. + +* [GitHub issue #REPLACE ME](REPLACE ME) + +## Changes since v1.3.9 +## :chart_with_upwards_trend: Overview +- 6 new commits merged +- 2 bugs fixed 🐛 + +## :bug: Bug Fixes +- Dependency: Bump to docker v24.0.5-0.20230714235725-36e9e796c6fc (#9046) +- KCP: Requeue KCP object if ControlPlaneComponentsHealthyCondition is not yet true (#9034) + +## :seedling: Others +- ClusterCacheTracker: Ensure Get/List calls are not getting stuck when apiserver is unreachable (#9033) +- Dependency: Bump docker to v24.0.5 (#9067) +- Dependency: Bump google.golang.org/grpc to v1.55.0 (#8971) +- Dependency: Change tilt debug base image to golang (#9075) + + +_Thanks to all our contributors!_ 😊 diff --git a/hack/tools/release/notes/test/golden/v1.5.0.md b/hack/tools/release/notes/test/golden/v1.5.0.md new file mode 100644 index 000000000000..714da8a229cb --- /dev/null +++ b/hack/tools/release/notes/test/golden/v1.5.0.md @@ -0,0 +1,299 @@ +## 👌 Kubernetes version support + +- Management Cluster: v1.**X**.x -> v1.**X**.x +- Workload Cluster: v1.**X**.x -> v1.**X**.x + +[More information about version support can be found here](https://cluster-api.sigs.k8s.io/reference/versions.html) + +## Highlights + +* REPLACE ME + +## Deprecation Warning + +REPLACE ME: A couple sentences describing the deprecation, including links to docs. + +* [GitHub issue #REPLACE ME](REPLACE ME) + +## Changes since v1.4.0 +## :chart_with_upwards_trend: Overview +- 335 new commits merged +- 4 breaking changes :warning: +- 19 feature additions ✨ +- 67 bugs fixed 🐛 + +## :warning: Breaking Changes +- API: Stop serving v1alpha3 API types (#8549) +- CAPD: Use k8s v1.27.0 in quickstart docs and CAPD (#8518) +- clusterctl: Follow XDG Directory standard for config/data/... files (#6913) +- Dependency: Bump to CR v0.15.0 (#8007) + +## :sparkles: New Features +- CAPBK: Use caching read for bootstrap config owner (#8867) +- CAPIM: Enable Kubernetes upgrades in CAPIM (#8938) +- ClusterClass: Add support or concurrent MD upgrades in classy clusters (#8432) +- ClusterClass: Add webhook warning for missing ClusterClass (#8746) +- clusterctl: Add in memory provider (#8799) +- clusterctl: Add MachinePool Machine support in clusterctl discovery (#8836) +- clusterctl: Add support for add-on providers in clusterctl (#8472) +- clusterctl: Feat: accept resource mutators in Move operation (#7966) +- clusterctl: Introduce possibility to create clusterctl plugins (#8957) +- Devtools: Hack/observability bump kube-state-metrics chart to get version v2.9.2 (#8979) +- Devtools: Hack/observability: Add Parca, Bump observability tools, Add Grafana scale dashboard (#8754) +- Devtools: Hack/observability: improve dashboards (#8964) +- e2e: Ci: collect debug information about leftover processes (#8734) +- IPAM: Implements Getter interface for IPAddressClaim object (#8374) +- Machine: Enable configuring the kubernetes rest client timeout for draining nodes (#8917) +- MachinePool: Add MachinePool Machine implementation in core CAPI components (#8828) +- MachineSet: MS preflight checks to improve cluster stability (#8595) +- MULTIPLE_AREAS[KCP/Core/CAPD]: Add flags for configuring rate limits (#8579) +- util: Move mergeMap to util (#8377) + +## :bug: Bug Fixes +- API: All: only set finalizers if deletionTimestamp is not set (#8949) +- API: Ensure ownerReference apiVersions are always up to date (#8256) +- CAPBK: Ignition: start kubeadm after network.target (#8772) +- CAPBK: Set uninitialized taint only on worker nodes (#8358) +- CAPD: Add kind mapper (#8880) +- CAPD: Change the haproxy entrypoint to prevent getting stopped immediately after start (#8685) +- CAPD: Delegate CAPD port selection to the container runtime (#8642) +- CAPD: Implement watch filter (#8789) +- CAPD: Test/capd: fix kind mapper entry for v1.25.11 (#8914) +- CAPD: Test/e2e fix fail-swap-on=false flag not being part of kind images anymore (#8767) +- CAPIM: Fix cluster deletion in the in-memory API server (#8818) +- CAPIM: Fix inmemory provider docker build (#8822) +- CAPIM: Test/e2e/in-memory: set providerID after VM is provisioned (#8879) +- CI: Always build Kind images for upgrade tests (#8859) +- CI: Ensure ALWAYS_BUILD_KIND_IMAGES is defaulted correctly in ci script (#8873) +- CI: Verifier: use pull_request instead of pull_request_target (#8635) +- ClusterCacheTracker: Stop pod caching when checking workload cluster (#8850) +- ClusterClass: Avoid errors when MHC and upgrade occur together in classy clusters (#8464) +- ClusterClass: Drop uid from error messages (#8333) +- ClusterClass: Topology controller should avoid unnecessary rollouts during upgrades (#8628) +- ClusterClass: Update TopologyReconciled condition on cluster deletion (#8422) +- ClusterClass: Validate variables in defaulting webhook (#8332) +- clusterctl: Add soft ownership from clusters to ClusterResourceSetBinding (#8318) +- clusterctl: Ensure all GitHub releases are fetched when searching provider versions (#8240) +- clusterctl: Handle nil pointer in clusterctl describe (#8724) +- clusterctl: Return early if release for latest tag does not exist yet (#8253) +- clusterctl: Return error on infra cluster and control plane discovery (#8604) +- clusterctl: Use local kustomize version in create-local-repository.py (#8414) +- ClusterResourceSet: : Make sure the Kubernetes API Server service already created on remote cluster before applying ClusterResourceSets (#8048) +- ClusterResourceSet: Continue applying when apply for a single cluster failed (#8611) +- Dependency: Bump to docker v24.0.5-0.20230714235725-36e9e796c6fc (#9042) +- Dependency: Update kindnetd and kindest/haproxy (#8469) +- Devtools: Change tilt debug base image to golang (#9072) +- Devtools: Tilt: fix build_engine setting when using podman (#8972) +- Devtools: Tilt: set CR logger in tilt-prepare, fix allowed contexts (#8919) +- Devtools: Update clean-charts make target for new paths (#8904) +- e2e: Adjust machinepool helper e2e timeout (#8739) +- e2e: Fix length check in MD helper (#8352) +- e2e: Ignore cert annotation in rollout test (#8761) +- e2e: Increase timeout for clusterclass rollout test (#8897) +- e2e: Increased assertClusterObjects timeout (#8758) +- e2e: Pin kindest/node images to known good versions in clusterctl upgrade tests (#8860) +- e2e: Remove non-functioning ginkgo.no-color flag (#8703) +- e2e: Revert "Add calico as e2e test CNI" (#8575) +- e2e: Test/e2e check for machines being ready after provisioning on Runtime SDK test (#8625) +- e2e: Test/e2e: use topology cluster-template for clusterctl upgrade mgmt cluster (#8311) +- e2e: Test/framework fix docker pod log collector (#8634) +- IPAM: Fix gateway being required for IPAddress (#8506) +- KCP: Allow machine rollout if cert reconcile fails (#8711) +- KCP: Enable updates from CloudInit (mostly ubuntu) based KCPs to Ignition (flatcar) based KCPs (#8339) +- KCP: Ensure nil-pointer check in KCP syncMachines (#8481) +- KCP: Prevent KCP to create many private keys for each reconcile (#8617) +- KCP: Requeue KCP object if ControlPlaneComponentsHealthyCondition is not yet true (#9035) +- Machine: Bug fix to set node interruptible label (#8297) +- Machine: Fix node label propagation (#8427) +- MachinePool: Add node watcher to MachinePool controller (#8443) +- MachinePool: Always patch owned conditions, fix GetTypedPhase, doc fixes (#8627) +- MachinePool: Fix MachinePool node taint patching (#8462) +- MachinePool: Update MachinePool bootstrap dataSecretName when bootstrap config changes (#8667) +- Release: Alphabetically sorting release tool output (#9060) +- Release: Hack/release-notes: ensure relase notes tool can be used for external projects again (#9021) +- Testing: Catch failure when fetching component URLs (#8455) +- Testing: Fix flake in machine phases test (#8370) +- Testing: Fix flaky wait in CRS test (#8334) +- Testing: Internal/machine-controller fix flakes in phases test (#8576) +- Testing: Machine-controller: fix phase tests race condition in tests on lastUpdated field (#8484) +- Testing: Use CreateAndWait in MP ScaleFromZero test (#8927) + +## :seedling: Others +- API: Deprecate v1alpha3 and v1alpha4 in CRDs (#8687) +- CAPBK: Replace reflect deepequal in bootstrap kubeadm (#8266) +- CAPD: Automatically set kubelet args for capd (#8881) +- CAPD: Only ignore necessary kubeadm preflight errors (#7911) +- CAPIM: Add ClusterClass support for in-memory provider (#8807) +- CAPIM: Add startup timeout to the in memory provider (#8831) +- CAPIM: Add watch to in-memory server multiplexer (#8851) +- CAPIM: Enable update for coreDNS and kube-proxy (#8899) +- CAPIM: Fix readme for in-memory provider (#8905) +- CAPIM: Fixups for watch in in-memory apiServer (#8898) +- CAPIM: Improve etcd management in CAPIM (#8906) +- CAPIM: In-memory provider: add apiserver & etcd metrics (#8962) +- CAPIM: Test/e2e/in-memory: enable unit tests (#8886) +- CAPIM: Test/e2e/in-memory: improve locking, return errors instead of panic (#8945) +- CAPIM: Test/e2e/in-memory: improve performance by fixing locking issues (#8895) +- CAPIM: Test/e2e/in-memory: sync in-memory provider ClusterClass with test (#8892) +- CAPIM: Test/infra/inmemory: rename controller files (#8830) +- CI: Add area/dependency label for dependabot when bumping gomod (#8410) +- CI: Add dependency label to github actions update (#8845) +- CI: Switch cloudbuild.yaml to e2 machine type (#8428) +- CI: Verifier: change back to pull_request_target to make it work again (#8637) +- ClusterCacheTracker: Deprecate DefaultIndex usage and remove where not needed (#8855) +- ClusterCacheTracker: Ensure Get/List calls are not getting stuck when apiserver is unreachable (#9030) +- ClusterCacheTracker: Fix accessor deletion on health check failure (#9031) +- ClusterCacheTracker: Improve error when workload cluster is not reachable (#8801) +- ClusterCacheTracker: Use ClusterCacheTracker consistently (instead of NewClusterClient) (#8744) +- ClusterCacheTracker: Use rest config from ClusterCacheTracker consistently (#8894) +- ClusterClass: Cluster/topology: use cached Cluster get in Reconcile (#8936) +- ClusterClass: Cluster/topology: use cached MD list in get current state (#8922) +- ClusterClass: Deprecate rolloutAfter in cluster topology (#8324) +- ClusterClass: Upgrading control plane should only be blocked if MD are upgrading (not just rolling out) (#8658) +- clusterctl: Add labels to OWNERS file (#8342) +- clusterctl: Add move annotation on objects for cluster move operation (#8322) +- clusterctl: Bump controller-tools to v0.12 (#8581) +- clusterctl: CAPIM: use consistent spelling for release artifacts (#8853) +- clusterctl: Drop cgroup-driver patch for CAPD (#8921) +- clusterctl: Fix spelling mistake in clusterctl comment (#8344) +- clusterctl: Prepare main branch for v1.5 development (#8430) +- clusterctl: Update cert-manager to v1.12.2 (#8883) +- Core: Cache unstructured in Cluster, MD and MS controller (#8916) +- Core: Remove unnecessary requeues (#8743) +- Dependency: Bump actions/checkout from 3.3.0 to 3.4.0 (#8321) +- Dependency: Bump actions/checkout from 3.4.0 to 3.5.0 (#8389) +- Dependency: Bump actions/checkout from 3.5.0 to 3.5.2 (#8540) +- Dependency: Bump actions/checkout from 3.5.2 to 3.5.3 (#8837) +- Dependency: Bump actions/setup-go from 3.5.0 to 4.0.1 (#8664) +- Dependency: Bump docker to v24.0.5 (#9065) +- Dependency: Bump docker/distribution to v2.8.2 (#8645) +- Dependency: Bump EndBug/add-and-commit from 9.1.1 to 9.1.2 (#8584) +- Dependency: Bump EndBug/add-and-commit from 9.1.2 to 9.1.3 (#8621) +- Dependency: Bump gcb-docker-gcloud from v20230424-910a2a439d to v20230522-312425ae46 (#8770) +- Dependency: Bump gcb-docker-gcloud image (#8570) +- Dependency: Bump github.com/emicklei/go-restful/v3 from 3.9.0 to 3.10.2 in /test (#9056) +- Dependency: Bump github.com/go-logr/logr from 1.2.3 to 1.2.4 (#8461) +- Dependency: Bump github.com/onsi/ginkgo/v2 from 2.10.0 to 2.11.0 (#8891) +- Dependency: Bump github.com/onsi/ginkgo/v2 from 2.9.2 to 2.9.4 (#8622) +- Dependency: Bump github.com/onsi/ginkgo/v2 from 2.9.4 to 2.9.5 (#8666) +- Dependency: Bump github.com/onsi/ginkgo/v2 from 2.9.5 to 2.9.7 (#8792) +- Dependency: Bump github.com/onsi/ginkgo/v2 from 2.9.7 to 2.10.0 (#8839) +- Dependency: Bump github.com/onsi/gomega from 1.27.4 to 1.27.5 (#8390) +- Dependency: Bump github.com/onsi/gomega from 1.27.6 to 1.27.7 (#8715) +- Dependency: Bump github.com/onsi/gomega from 1.27.7 to 1.27.8 (#8841) +- Dependency: Bump github.com/prometheus/client_golang from 1.14.0 to 1.15.0 (#8541) +- Dependency: Bump github.com/prometheus/client_golang from 1.15.0 to 1.15.1 (#8623) +- Dependency: Bump github.com/prometheus/client_golang from 1.15.1 to 1.16.0 (#8890) +- Dependency: Bump github.com/spf13/cobra from 1.6.1 to 1.7.0 (#8502) +- Dependency: Bump github.com/spf13/viper from 1.15.0 to 1.16.0 (#8791) +- Dependency: Bump golang version (1.20.3 -> 1.20.4) (#8749) +- Dependency: Bump golang.org/x/oauth2 from 0.6.0 to 0.7.0 (#8503) +- Dependency: Bump golang.org/x/oauth2 from 0.7.0 to 0.8.0 (#8665) +- Dependency: Bump golang.org/x/oauth2 from 0.8.0 to 0.9.0 (#8889) +- Dependency: Bump golang.org/x/oauth2 from 0.9.0 to 0.10.0 (#8985) +- Dependency: Bump golang.org/x/text from 0.8.0 to 0.9.0 (#8504) +- Dependency: Bump golang.org/x/text from 0.9.0 to 0.10.0 (#8840) +- Dependency: Bump golangci-lint to 1.52.1 and fix findings (#8331) +- Dependency: Bump golangci-lint to v1.51.2 (#8312) +- Dependency: Bump golangci/golangci-lint-action from 3.4.0 to 3.5.0 (#8790) +- Dependency: Bump golangci/golangci-lint-action from 3.5.0 to 3.6.0 (#8838) +- Dependency: Bump gomodules.xyz/jsonpatch/v2 from 2.2.0 to 2.3.0 (#8716) +- Dependency: Bump kind to v0.19.0 (#8681) +- Dependency: Bump kindnet and haproxy images to latest (#8676) +- Dependency: Bump to Go 1.20.6 (#9058) +- Dependency: Update cert manager to v1.11.1 (#8529) +- Dependency: Update cert-manager to v1.11.2 (#8638) +- Dependency: Update cert-manager to v1.12.0 (#8702) +- Dependency: Update cert-manager to v1.12.1 (#8748) +- Dependency: Update controller runtime to 0.14.6 (#8405) +- Dependency: Update controller tools to v0.11.4 (#8547) +- Dependency: Update conversion-gen version (v0.26.0 -> v0.27.1) (#8573) +- Dependency: Update docker to v20.10.24 (#8475) +- Dependency: Update golangci-lint to v1.53.3 (#8796) +- Dependency: Update kind to v0.18.0 (#8433) +- Dependency: Update KIND to v0.20.0 (#8908) +- Dependency: Update kpromo to v3.5.2 (#8487) +- Dependency: Update kpromo to v3.6.0 (#8680) +- Dependency: Update kubebuilder envtest (1.26.0 -> 1.27.1) (#8599) +- Dependency: Upgrade golang version (1.19.6 -> 1.20.3) (#8527) +- Devtools: Add go.work to .gitignore and .dockerignore (#8155) +- Devtools: Align kind registry script with upstream (#8731) +- Devtools: All: Add flags to enable block profiling (#8934) +- Devtools: Build golangci-lint locally (#8933) +- Devtools: Bump containerd to 1.6.18 in hack/tools (#8523) +- Devtools: Hack/observability: add apiserver request dashboards (#8978) +- Devtools: Hack/observability: Add Grafana state dashboard, improve metrics (#8834) +- Devtools: Hack/observability: add metrics-server chart (#8950) +- Devtools: Hack/observability: add tempo (for traces) (#8920) +- Devtools: Hack/observability: Bump Loki, Grafana and promtail charts (#7182) +- Devtools: Hack/observability: disable unused loki-gateway (#8794) +- Devtools: Hack/observability: improve Grafana dashboards (#8861) +- Devtools: Hack/observability: move charts so they are ignored by go mod (#8795) +- Devtools: Hack/observability: skip preload images on non-kind clusters (#8931) +- Devtools: Hack/observability: use 20 Gi of storage for Prometheus (#8961) +- Devtools: Pin delve to match go minor version (#8725) +- Devtools: Protect well know registry from accidental push during tilt up (#8930) +- e2e: Add E2E test for MachineSet Preflight checks (#8698) +- e2e: Add improvements to scale e2e (#8910) +- e2e: Add Scale e2e - development only (#8833) +- e2e: Add SHA to default KIND image used in e2e tests (#8975) +- e2e: Assert E2E error responses when waiting for MD nodes (#8501) +- e2e: Autoscaler e2e test (#8514) +- e2e: Disable fail-fast by default for e2e tests (#8548) +- e2e: Improve gomega fail handling in clusterClass rollout (#8769) +- e2e: Improve logging for MachinePool upgrade test (#8728) +- e2e: Log leftover processes to eventually detect zombies (#8662) +- e2e: Modify scale e2e test defaults (#8902) +- e2e: Move ClusterClass quickstart test from e2e-informing to e2e-main (#8765) +- e2e: Pin cgroup driver used in v0.3 and v0.4 templates (#8684) +- e2e: Test/e2e: add field to scale test to deploy Clusters in separate namespace (#8963) +- e2e: Test/e2e: also dump workload cluster kube-system pods (#8800) +- e2e: Test/e2e: cleanup test files (#8557) +- e2e: Test/e2e: Fixup dump kube-system pods (#8809) +- e2e: Test/e2e: improve logging for a detected rollout (#8953) +- e2e: Test/e2e: increase apply timeout to 1m (#8941) +- e2e: Test/framework: add functions to collect infrastructure logs in tests (#8675) +- e2e: Unhold CI packages before installing (#7910) +- IPAM: Make IPAddressClaim.Status.AddressRef optional (#8493) +- KCP: Avoid panic if etcd server misbehaves (#8862) +- KCP: Cache secrets between LookupOrGenerate and ensureCertificatesOwnerRef (#8926) +- KCP: Cache unstructured (#8913) +- KCP: Change endpoints to endpoint in the etcd client (#8909) +- KCP: Drop redundant get machines (#8912) +- KCP: Fix noisy error log triggered by missing patch helper (#8863) +- KCP: Improve error log on scale up when Machine doesn't have a nodeRef (#8564) +- KCP: Kcp use one workload cluster for reconcile (#8900) +- KCP: Log the reason of a Machine rollout (#8959) +- KCP: Remove v1alpha2 adoption logic from KCP (#8328) +- Machine: Controller/machine: use unstructured caching client (#8896) +- Machine: Optimize `reconcileInterruptibleNodeLabel` of machine controller (#8852) +- Machine: Use providerID string as-is (#8577) +- MachineDeployment: Drop the first return value from FindOldMachineSets (#8415) +- MachineSet: Add MachineFinalizer during machine computation (#8463) +- MachineSet: Surface failed preflight checks on MachineSet in `MachinesCreated` condition (#8669) +- MULTIPLE_AREAS[ClusterCacheTracker/KCP/CAPBK]: Cache secrets in KCP, CABPK and ClusterCacheTracker (#8940) +- Release: Add area label lookup for prefixes to release notes tool (#8780) +- Release: Add runtime extension components to release (#8438) +- Release: Bump kpromo to v3.5.1 (#8301) +- Release: Fixed grammatically incorrect plurals in release tools (#9054) +- Release: Improve release notes formatting (#8826) +- Release: Improve release notes output (#8928) +- Release: Make release notes generation concurrent (#8817) +- Runtime SDK: Update handler name validation rules (#8280) +- Testing: Add calico as e2e test CNI (#8420) +- Testing: Add dualstack e2e test (#8517) +- Testing: Add unit test for health check during creation of a new cluster accessor (#8269) +- Testing: Allow overriding gingko args in e2e tests (#8365) +- Testing: Fix typos in phrase "to exist" (#8688) +- Testing: Merge ownerReference tests with quick start (#8264) +- Testing: Update e2e upgrade test versions (#8361) +- Testing: Update version matrix for github workflows (#8398) +- Testing: Validating the warnings in tests (#8778) +- util: Cache list calls in cluster to objects mapper (#8918) +- util: Move `internal.labels` to `format` package for use by providers (#9006) +- util: Rename internal/util/ssa util functions for better naming consistency (#8423) + +:book: Additionally, there have been 72 contributions to our documentation and book. (#8252, #8279, #8284, #8288, #8293, #8307, #8308, #8309, #8319, #8327, #8351, #8355, #8363, #8375, #8383, #8397, #8416, #8419, #8439, #8446, #8447, #8454, #8508, #8509, #8510, #8511, #8520, #8521, #8552, #8554, #8559, #8580, #8587, #8593, #8596, #8597, #8612, #8613, #8630, #8632, #8651, #8661, #8673, #8686, #8699, #8701, #8712, #8719, #8729, #8740, #8753, #8760, #8762, #8763, #8775, #8779, #8781, #8782, #8787, #8798, #8802, #8805, #8812, #8843, #8854, #8901, #8924, #8932, #8955, #8956, #8958, #8960) + + +_Thanks to all our contributors!_ 😊