Commit Graph

10005 Commits

Author SHA1 Message Date
Tim Hockin
bad67dc973
Fix golangci-lint for workspaces 2024-02-29 22:06:07 -08:00
Tim Hockin
3163fc4f69
Change update-golangci-lint-config to new setup_env 2024-02-29 22:06:06 -08:00
Tim Hockin
714f8a0855
Change verify-yamlfmt to new setup_env 2024-02-29 22:06:06 -08:00
Tim Hockin
3dc447708b
Change verify-gofmt to new setup_env 2024-02-29 22:06:05 -08:00
Tim Hockin
d785f13c05
Change verify-licenses to new setup_env 2024-02-29 22:06:04 -08:00
Tim Hockin
974276e4a0
Change update-openapi-spec to new setup_env 2024-02-29 22:06:03 -08:00
Tim Hockin
2ee339b023
Simplify verify-cli-conventions; use new setup_env 2024-02-29 22:06:02 -08:00
Tim Hockin
2924b90d75
Change verify-api-groups.sh to s/vendor/staging/
I'm really not sure what this particular file check is doing, but that's
for tomorrow.
2024-02-29 22:06:01 -08:00
Tim Hockin
b725fd20c2
Fix update/verify-mocks.sh
There appears to be a bug in `go generate` for workspaces which will be
fixed in the 1.22.1 release.
2024-02-29 22:06:00 -08:00
Tim Hockin
58ab5eea89
Remove some references to GOPATH 2024-02-29 22:05:59 -08:00
Tim Hockin
5f490b4fe8
Clarify, document KUBE_OUTPUT_* variables 2024-02-29 22:05:42 -08:00
Tim Hockin
f47e0cb779
Rename KUBE_OUTPUT_BINPATH -> KUBE_OUTPUT_BIN
"...PATH" doesn't add anything and confuses it with KUBE_OUTPUT_SUBPATH.
2024-02-29 00:22:14 -08:00
Tim Hockin
aaf6fc07d8
Make build scripts use Go import paths
This helps 2 things:
1) output is cleaner
2) whether a build is static or non-static depends on string matching,
   which is easier after this

If you specify a `...` pattern, this will preserve it, which breaks the
static/non-static matching but really, can we just agree that `make` is
for binaries?  It works for other things but so does `go build`.

Example:

```
$ make WHAT="cmd/kubectl/ ./staging/src/k8s.io/api/... ./test/e2e/e2e.test ./test/e2e/e2e.test ./cmd/kubectl/ "
go version go1.21.4 linux/amd64
+++ [1208 22:24:43] Building go targets for linux/amd64
    k8s.io/api/... (non-static)
    k8s.io/kubernetes/cmd/kubectl (static)
    k8s.io/kubernetes/test/e2e/e2e.test (test)
```
2024-02-29 00:22:13 -08:00
Tim Hockin
f3c8e92def
Clean up test.sh and get rid of GOPATH
Result: `make test` works:

```
$ #### BUILD ####

$ make WHAT="./cmd/kubectl/ ./staging/src/k8s.io/api"
+++ [1211 11:20:46] Building go targets for linux/amd64
    ./cmd/kubectl/ (non-static)
    ./staging/src/k8s.io/api (non-static)

$ #### TEST ####

$ make test WHAT=./pkg/proxy/iptables/
+++ [1211 11:22:31] Set GOMAXPROCS automatically to 6
+++ [1211 11:22:31] Running tests without code coverage and with -race
ok  	k8s.io/kubernetes/pkg/proxy/iptables	9.517s

$ make test WHAT=pkg/proxy/iptables/
+++ [1211 11:22:53] Set GOMAXPROCS automatically to 6
+++ [1211 11:22:53] Running tests without code coverage and with -race
ok  	k8s.io/kubernetes/pkg/proxy/iptables	(cached)

$ make test WHAT=k8s.io/kubernetes/pkg/proxy/iptables/
+++ [1211 11:23:09] Set GOMAXPROCS automatically to 6
+++ [1211 11:23:09] Running tests without code coverage and with -race
ok  	k8s.io/kubernetes/pkg/proxy/iptables	(cached)

$ make test WHAT=./staging/src/k8s.io/api
+++ [1211 11:23:24] Set GOMAXPROCS automatically to 6
+++ [1211 11:23:24] Running tests without code coverage and with -race
ok  	k8s.io/api	21.981s

$ make test WHAT=staging/src/k8s.io/api
+++ [1211 11:23:54] Set GOMAXPROCS automatically to 6
+++ [1211 11:23:54] Running tests without code coverage and with -race
ok  	k8s.io/api	(cached)

$ make test WHAT=k8s.io/api
+++ [1211 11:24:06] Set GOMAXPROCS automatically to 6
+++ [1211 11:24:06] Running tests without code coverage and with -race
ok  	k8s.io/api	(cached)
```
2024-02-29 00:22:13 -08:00
Tim Hockin
8cb8535d9c
Excise KUBE_GOPATH from coverage build 2024-02-29 00:22:12 -08:00
Tim Hockin
0af3106442
Dedup binaries when building 2024-02-29 00:22:11 -08:00
Tim Hockin
9256031a87
Workspaces: excise vendor from golang.sh
```
$ make
go version go1.20.4 linux/amd64
+++ [0506 13:21:33] Building go targets for linux/amd64
    ./cmd/kube-proxy (static)
    ./cmd/kube-apiserver (static)
    ./cmd/kube-controller-manager (static)
    ./cmd/kubelet (non-static)
    ./cmd/kubeadm (static)
    ./cmd/kube-scheduler (static)
    ./staging/src/k8s.io/component-base/logs/kube-log-runner (static)
    ./staging/src/k8s.io/kube-aggregator (static)
    ./staging/src/k8s.io/apiextensions-apiserver (static)
    ./cluster/gce/gci/mounter (non-static)
    ./cmd/kubectl (static)
    ./cmd/kubectl-convert (static)
    github.com/onsi/ginkgo/v2/ginkgo (non-static)
    ./test/e2e/e2e.test (test)
    ./test/conformance/image/go-runner (non-static)
    ./cmd/kubemark (static)
    github.com/onsi/ginkgo/v2/ginkgo (non-static)
    ./test/e2e_node/e2e_node.test (test)
```

before:
real	4m31.100s
user	21m1.466s
sys	2m23.546s

after:
real	3m46.591s
user	16m34.665s
sys	2m1.553s
2024-02-29 00:22:10 -08:00
Tim Hockin
df42d56947
Remove vendor from ldflags 2024-02-29 00:22:09 -08:00
Tim Hockin
81d932906a
Make golang::binaries_from_targets smarter
and use it from test

Result: `make` works, but `make test` still broken

```
$ make kubectl
+++ [1211 11:15:46] Building go targets for linux/amd64
    ./cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [1211 11:15:53] Building go targets for linux/amd64
    ./cmd/kubectl/ (non-static)

$ make WHAT=cmd/kubectl/
+++ [1211 11:16:02] Building go targets for linux/amd64
    ./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [1211 11:16:16] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./staging/src/k8s.io/api
+++ [1211 11:16:31] Building go targets for linux/amd64
    ./staging/src/k8s.io/api (non-static)

$ make WHAT=staging/src/k8s.io/api
+++ [1211 11:16:43] Building go targets for linux/amd64
    ./staging/src/k8s.io/api (non-static)

$ make WHAT=k8s.io/api
+++ [1211 11:16:50] Building go targets for linux/amd64
    k8s.io/api (non-static)
```

```
$ make test WHAT=./cmd/kubectl
+++ [1211 11:17:23] Set GOMAXPROCS automatically to 6
+++ [1211 11:17:23] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:191: test] Error 1
```
2024-02-29 00:22:08 -08:00
Tim Hockin
8b579b2347
Change the build_binaries path to use modules
This makes "new" and "old" setup_env functions. In subsequent commits,
all callers of the "old" form will be fixed, and the "new" will be
renamed back.

The old and new functions diff:

```diff
--- /tmp/a	2023-12-14 09:02:57.804092696 -0800
+++ /tmp/b	2023-12-14 09:03:09.679999585 -0800
@@ -1,4 +1,4 @@
-kube::golang::old::setup_env() {
+kube::golang:🆕:setup_env() {
   kube::golang::verify_go_version

   # Set up GOPATH.  We have tools which depend on being in a GOPATH (see
@@ -7,9 +7,9 @@
   # Even in module mode, we need to set GOPATH for `go build` and `go install`
   # to work.  We build various tools (usually via `go install`) from a lot of
   # scripts.
-  #   * We can't set GOBIN because that does not work on cross-compiles.
-  #   * We could use `go build -o <something>`, but it's subtle when it comes
-  #     to cross-compiles and whether the <something> is a file or a directory,
+  #   * We can't just set GOBIN because that does not work on cross-compiles.
+  #   * We could always use `go build -o <something>`, but it's subtle wrt
+  #     cross-compiles and whether the <something> is a file or a directory,
   #     and EVERY caller has to get it *just* right.
   #   * We could leave GOPATH alone and let `go install` write binaries
   #     wherever the user's GOPATH says (or doesn't say).
@@ -20,16 +20,6 @@
   #
   # Eventually, when we no longer rely on run-in-gopath.sh we may be able to
   # simplify this some.
-  local go_pkg_dir="${KUBE_GOPATH}/src/${KUBE_GO_PACKAGE}"
-  local go_pkg_basedir
-  go_pkg_basedir=$(dirname "${go_pkg_dir}")
-
-  mkdir -p "${go_pkg_basedir}"
-
-  # TODO: This symlink should be relative.
-  if [[ ! -e "${go_pkg_dir}" || "$(readlink "${go_pkg_dir}")" != "${KUBE_ROOT}" ]]; then
-    ln -snf "${KUBE_ROOT}" "${go_pkg_dir}"
-  fi
   export GOPATH="${KUBE_GOPATH}"

   # If these are not set, set them now.  This ensures that any subsequent
@@ -40,24 +30,10 @@
   # Make sure our own Go binaries are in PATH.
   export PATH="${KUBE_GOPATH}/bin:${PATH}"

-  # Change directories so that we are within the GOPATH.  Some tools get really
-  # upset if this is not true.  We use a whole fake GOPATH here to collect the
-  # resultant binaries.
-  local subdir
-  subdir=$(kube::realpath . | sed "s|${KUBE_ROOT}||")
-  cd "${KUBE_GOPATH}/src/${KUBE_GO_PACKAGE}/${subdir}" || return 1
-
-  # Set GOROOT so binaries that parse code can work properly.
-  GOROOT=$(go env GOROOT)
-  export GOROOT
-
   # Unset GOBIN in case it already exists in the current session.
   # Cross-compiles will not work with it set.
   unset GOBIN

-  # This seems to matter to some tools
-  export GO15VENDOREXPERIMENT=1
-
-  # Disable workspaces
-  export GOWORK=off
+  # Explicitly turn on modules.
+  export GO111MODULE=on
 }
```

Result: `make` works for k/k:

```
$ make kubectl
+++ [1211 11:07:31] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)

$ make WHAT=./cmd/kubectl/
+++ [1211 11:08:19] Building go targets for linux/amd64
    k8s.io/kubernetes/./cmd/kubectl/ (non-static)

$ make WHAT=k8s.io/kubernetes/cmd/kubectl
+++ [1211 11:08:52] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kubectl (static)
```

Result: `make` works for staging by package:

```
$ make WHAT=k8s.io/api
+++ [1211 11:11:37] Building go targets for linux/amd64
    k8s.io/api (non-static)
```

Result: `make` fails for staging by path:

```
$ make WHAT=./staging/src/k8s.io/api
+++ [1211 11:12:44] Building go targets for linux/amd64
    k8s.io/kubernetes/./staging/src/k8s.io/api (non-static)
cannot find module providing package k8s.io/kubernetes/staging/src/k8s.io/api: import lookup disabled by -mod=vendor
	(Go version in go.work is at least 1.14 and vendor directory exists.)
!!! [1211 11:12:44] Call tree:
!!! [1211 11:12:44]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:850 kube::golang::build_some_binaries(...)
!!! [1211 11:12:44]  2: /home/thockin/src/kubernetes/hack/lib/golang.sh:1012 kube::golang::build_binaries_for_platform(...)
!!! [1211 11:12:44]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [1211 11:12:44] Call tree:
!!! [1211 11:12:44]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [1211 11:12:44] Call tree:
!!! [1211 11:12:44]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:96: all] Error 1
```

Result: `make test` fails:

```
$ make test WHAT=./cmd/kubectl
+++ [1211 11:13:38] Set GOMAXPROCS automatically to 6
+++ [1211 11:13:38] Running tests without code coverage and with -race
cmd/kubectl/kubectl.go:25:2: cannot find package "k8s.io/client-go/plugin/pkg/client/auth" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/client-go/plugin/pkg/client/auth (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/client-go/plugin/pkg/client/auth (from $GOPATH)
cmd/kubectl/kubectl.go:20:2: cannot find package "k8s.io/component-base/cli" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/component-base/cli (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/component-base/cli (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/component-base/cli (from $GOPATH)
cmd/kubectl/kubectl.go:21:2: cannot find package "k8s.io/kubectl/pkg/cmd" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd (from $GOPATH)
cmd/kubectl/kubectl.go:22:2: cannot find package "k8s.io/kubectl/pkg/cmd/util" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/kubectl/pkg/cmd/util (vendor tree)
	/home/thockin/sdk/gotip/src/k8s.io/kubectl/pkg/cmd/util (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubectl/pkg/cmd/util (from $GOPATH)
make: *** [Makefile:191: test] Error 1
```
2024-02-29 00:22:07 -08:00
Patrick Ohly
65b841c077
Generate go.work files
This creates go.work and enables Go Workspaces.  This is a file that
includes info on k/k and all the staging modules.

This depends on go 1.22 and setting FORCE_HOST_GO=true (for kube
scripts, which try to be hermetic).

Make this part of the normal update/verify sequence.

The top-level go.work file contains no replace statements. Instead, the
replace statements in the individual go.mod files are used. For this to
work, replace statements in the individual go.mod files have to be
consistent.

hack/tools has different dependencies and can't be in the main
workspace, so this adds a go.work just for that.  Without this, go tries
to consider all deps in all modules and pick one that works for all.
This is problematic because there are so many of them that it is
difficult to manage.

Likewise for k8s.io/code-generator/examples and
k8s.io/kms/internal/plugins/_mock - add trivial go.work files.

For example k/k depends on an older version of a lib that gloangci-lint
needs (transitively) and it breaks.

This also updates vendor (needed to make go happy), and removes
vendor'ed symlinks.  This breaks a LOT of our build tools, which will be
fixed subsequently.

Result: `go` commands work across modules:

Before:
```
$ go list ./pkg/proxy/iptables/ ./staging/src/k8s.io/api/core/v1/
main module (k8s.io/kubernetes) does not contain package k8s.io/kubernetes/staging/src/k8s.io/api/core/v1

$ go build ./pkg/proxy/iptables/ ./staging/src/k8s.io/api
main module (k8s.io/kubernetes) does not contain package k8s.io/kubernetes/staging/src/k8s.io/api

$ go test ./pkg/proxy/iptables/ ./staging/src/k8s.io/api
main module (k8s.io/kubernetes) does not contain package k8s.io/kubernetes/staging/src/k8s.io/api
```

After:
```
$ go list ./pkg/proxy/iptables/ ./staging/src/k8s.io/api/core/v1/
k8s.io/kubernetes/pkg/proxy/iptables
k8s.io/api/core/v1

$ go build ./pkg/proxy/iptables/ ./staging/src/k8s.io/api

$ go test ./pkg/proxy/iptables/ ./staging/src/k8s.io/api
ok  	k8s.io/kubernetes/pkg/proxy/iptables	0.360s
ok  	k8s.io/api	2.302s
```

Result: `make` fails:

```
$ make
go version go1.22rc1 linux/amd64
+++ [0106 12:11:03] Building go targets for linux/amd64
    k8s.io/kubernetes/cmd/kube-proxy (static)
    k8s.io/kubernetes/cmd/kube-apiserver (static)
    k8s.io/kubernetes/cmd/kube-controller-manager (static)
    k8s.io/kubernetes/cmd/kubelet (non-static)
    k8s.io/kubernetes/cmd/kubeadm (static)
    k8s.io/kubernetes/cmd/kube-scheduler (static)
    k8s.io/component-base/logs/kube-log-runner (static)
    k8s.io/kube-aggregator (static)
    k8s.io/apiextensions-apiserver (static)
    k8s.io/kubernetes/cluster/gce/gci/mounter (static)
    k8s.io/kubernetes/cmd/kubectl (static)
    k8s.io/kubernetes/cmd/kubectl-convert (static)
    github.com/onsi/ginkgo/v2/ginkgo (non-static)
    k8s.io/kubernetes/test/e2e/e2e.test (test)
    k8s.io/kubernetes/test/conformance/image/go-runner (non-static)
    k8s.io/kubernetes/cmd/kubemark (static)
    github.com/onsi/ginkgo/v2/ginkgo (non-static)
    k8s.io/kubernetes/test/e2e_node/e2e_node.test (test)
test/e2e/e2e.go:35:2: cannot find package "k8s.io/api/apps/v1" in any of:
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/kubernetes/vendor/k8s.io/api/apps/v1 (vendor tree)
	/home/thockin/src/kubernetes/_output/local/.gimme/versions/go1.22rc1.linux.amd64/src/k8s.io/api/apps/v1 (from $GOROOT)
	/home/thockin/src/kubernetes/_output/local/go/src/k8s.io/api/apps/v1 (from $GOPATH)
	... more ...
	... more ...
	... more ...
!!! [0106 12:13:41] Call tree:
!!! [0106 12:13:41]  1: /home/thockin/src/kubernetes/hack/lib/golang.sh:948 kube::golang::build_binaries_for_platform(...)
!!! [0106 12:13:41]  2: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0106 12:13:41] Call tree:
!!! [0106 12:13:41]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! [0106 12:13:41] Call tree:
!!! [0106 12:13:41]  1: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
make: *** [Makefile:96: all] Error 1
```

Again, this requires go 1.22 (e.g. gotip), as go 1.21.x does not have
`go work vendor` support.

TO REPEAT:
    ( \
      ./hack/update-go-workspace.sh; \
      ./hack/update-vendor.sh; \
      ./hack/update-go-workspace.sh; \
    )
2024-02-29 00:22:06 -08:00
Christoph Blecker
0a1edf8bda
Re-add KUBE_TIMEOUT explicitly to make test 2024-02-26 15:46:38 -08:00
Kubernetes Prow Robot
18a49b6c56
Merge pull request #123393 from cblecker/fix-make
Fix makefile variable expansion for test-integration target
2024-02-26 12:06:57 -08:00
Christoph Blecker
ca41a9222d
Fix makefile variable expansion for test-integration target 2024-02-26 09:01:04 -08:00
Kay Yan
78c9610235 hack/tools: update to golangci-lint v1.56.2 + golang v1.21
Signed-off-by: Kay Yan <kay.yan@daocloud.io>
2024-02-22 07:03:10 +00:00
Kubernetes Prow Robot
6049a1bca4
Merge pull request #122880 from Jefftree/agg-discovery-v2-types
Add aggregated discovery v2 types
2024-02-20 21:03:22 -08:00
Kubernetes Prow Robot
0e8ef9c353
Merge pull request #123334 from pohly/lint-skip-in-verify
golangci-lint: optionally skip it during "make verify", II
2024-02-16 07:15:42 -08:00
Patrick Ohly
c1f2fe7bcb golangci-lint: optionally skip it during "make verify", II
The pull-kubernetes-verify job is using this to run the base
verify-golangci.sh only in the pull-kubernetes-verify-lint job.
Because the file name was not quite right, it still ran.
2024-02-16 10:07:51 +01:00
Kubernetes Prow Robot
0b24b55e7f
Merge pull request #123269 from pohly/lint-skip-in-verify
golangci-lint: optionally skip it during "make verify"
2024-02-14 18:08:18 -08:00
Patrick Ohly
39606af8c3 golangci-lint: optionally skip it during "make verify"
The pull-kubernetes-verify job is going to use this to run the base
verify-golangci.sh only in the pull-kubernetes-verify-lint job.
2024-02-13 17:35:15 +01:00
Patrick Ohly
8876b68a60 golangci-lint: add hints for error wrapping
Wrapping errors may or may not be the right thing to do (see
https://go.dev/blog/go1.13-errors#whether-to-wrap and the discussion in
https://github.com/kubernetes/kubernetes/issues/123234). But developers should
at least think about it, so let's emit linter hints for it: the golangci-lint
config by default enables it for go-errorlint, just not the linter itself, so
we just need to add it for the "hints" config.

Direct error comparisons and assertions also get checked. Those are typically
something that should be replaced by errors.Is and errors.As, but as the
existing code often doesn't do that, let's also treat those as just hints.
2024-02-13 14:12:04 +01:00
Kubernetes Prow Robot
7bea14097b
Merge pull request #122612 from mtardy/remove-scdeny
auth: remove SecurityContextDeny admission plugin
2024-02-12 08:37:13 -08:00
cpanato
ddb0b8da9d
[go] Bump images, dependencies and versions to go 1.22
Signed-off-by: cpanato <ctadeu@gmail.com>
2024-02-09 14:43:34 +01:00
José Carlos Chávez
6d6398ef92
chore: adds consistent vanity import to files and provides tooling for verifying and updating them. (#120642)
* chore: drops update vanity imports from script.

* chore: changes copyright year to 2024.

* chore: makes lint happy.
2024-02-08 04:33:30 -08:00
Kubernetes Prow Robot
27e15a6c70
Merge pull request #123159 from oxxenix/master
Revert "print error message regardless verbosity level"
2024-02-07 09:03:43 -08:00
bzsuni
658e3308f3 etcd: Update to version 3.5.12
Signed-off-by: bzsuni <bingzhe.sun@daocloud.io>
2024-02-07 21:16:08 +08:00
Oksana Baranova
1ae7553744 Revert "print error message regardless verbosity level"
This reverts commit a4afaeda37.
2024-02-06 16:40:08 +02:00
Kubernetes Prow Robot
c0618cf947
Merge pull request #122769 from thockin/bump_shellcheck_version
Bump shellcheck to 0.9.0
2024-02-05 08:45:29 -08:00
Masashi Honma
9027049f2c local-up-cluster.sh: Use config file instead of flags for kubelet
Because /tmp/kubelet.log shows trailing log.

Flag --container-runtime-endpoint has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more information.

Signed-off-by: Masashi Honma <masashi.honma@gmail.com>
2024-02-02 09:39:05 +09:00
cpanato
c9991e4270
[go] Bump images, dependencies and versions to go 1.22rc1
Signed-off-by: cpanato <ctadeu@gmail.com>
2024-01-28 10:10:47 +01:00
Tim Hockin
a7cf7fe55a
Bump shellcheck to 0.9.0
Fix everything it flagged.
2024-01-26 16:26:40 -08:00
Kubernetes Prow Robot
c4feb19195
Merge pull request #122878 from liggitt/typecheck-kube-proxy-darwin
Re-allow building kube-proxy on all platforms
2024-01-26 16:32:12 +01:00
Kubernetes Prow Robot
d3479eeeac
Merge pull request #122941 from bart0sh/PR130-cleanup-boilerplate_test
Fix and cleanup boilerplate_test.py
2024-01-26 00:56:35 +01:00
Davanum Srinivas
139c6daf30
Missed a spot! testing verify-licenses.sh
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-25 15:26:43 -05:00
Kubernetes Prow Robot
6892e38362
Merge pull request #122963 from SataQiu/fix-20240125
Enable testing import check for kubeadm binary
2024-01-25 16:01:52 +01:00
Kubernetes Prow Robot
192e53590e
Merge pull request #122956 from dims/fix-license-verification-script
Fix license verification script
2024-01-25 16:01:45 +01:00
Davanum Srinivas
89db64e053
collect generated files and logs
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-25 07:23:31 -05:00
SataQiu
39afee443f enable testing import check for kubeadm binary 2024-01-25 19:56:42 +08:00
Kubernetes Prow Robot
81986587ef
Merge pull request #122917 from bells17/make-update-add-update-golangci-lint-config
make update: add update-golangci-lint-config
2024-01-25 08:30:57 +01:00
Davanum Srinivas
9b96ab46ee Fix license verification script 2024-01-25 03:47:09 +00:00
Ed Bartosh
83de1586e0 boilerplate_test:fix pylint warnings
Fixed the following Pylint warnings:

boilerplate_test.py:34:8: R0205: Class 'Args' inherits from object, can be safely removed from bases in python3 (useless-object-inheritance)
boilerplate_test.py:46:8: W0612: Unused variable 'ret' (unused-variable)
boilerplate_test.py:18:0: C0411: standard import "import unittest" should be placed before "import boilerplate" (wrong-import-order)
boilerplate_test.py:19:0: C0411: standard import "from io import StringIO" should be placed before "import boilerplate" (wrong-import-order)
boilerplate_test.py:20:0: C0411: standard import "import os" should be placed before "import boilerplate" (wrong-import-order)
boilerplate_test.py:21:0: C0411: standard import "import sys" should be placed before "import boilerplate" (wrong-import-order)
2024-01-24 11:05:26 +02:00
Ed Bartosh
4473dfebbf fix boilerplate test
Fixed AttributeError: type object '_io.StringIO' has no attribute 'StringIO'
2024-01-24 11:04:52 +02:00
Ed Bartosh
9dc1da1e5b boilerplate_test: fix bad indentation 2024-01-24 10:36:52 +02:00
Kubernetes Prow Robot
7bb00356f0
Merge pull request #122857 from nilo19/chore/cleanup-azure
chore: Cleanup in-tree credential provider azure and cloud provider a…
2024-01-23 21:31:11 +01:00
Kubernetes Prow Robot
89dcee65a2
Merge pull request #121735 from vlasebian/issue-115175-testing-import-presubmit-check
Add script for restricting import of test only libraries
2024-01-23 20:03:46 +01:00
Jordan Liggitt
8b22cb4696
Revert "Make verify-typecheck.sh only check valid targets for a platform"
This reverts commit e48aa09340.
2024-01-22 20:45:25 -08:00
bells17
62eb7cb4f9 make update: add update-golangci-lint-config 2024-01-23 03:09:13 +09:00
Qi Ni
3bf2bf8191 chore: Cleanup in-tree credential provider azure and cloud provider azure 2024-01-20 15:18:31 +08:00
Kubernetes Prow Robot
418ae605ec
Merge pull request #122879 from liggitt/verbose-local-up
Make local-up-cluster non-verbose by default
2024-01-20 03:50:35 +01:00
Kubernetes Prow Robot
fbb2e6293f
Merge pull request #122871 from oxxenix/minor-fix
Print error message regardless verbosity value
2024-01-19 21:04:18 +01:00
Jefftree
1a38fb3c35 init.sh fix 2024-01-19 13:14:09 -05:00
Jordan Liggitt
6ae264464c
Make local-up-cluster non-verbose by default 2024-01-19 08:27:28 -08:00
Oksana Baranova
a4afaeda37 print error message regardless verbosity level
Signed-off-by: Oksana Baranova <oksana.baranova@intel.com>
2024-01-19 13:57:27 +02:00
Jordan Liggitt
1192f313b8
Fix local-up-cluster on darwin 2024-01-18 08:51:45 -08:00
Tim Hockin
0d366dd99a
codegen: Use long flag names for clarity 2024-01-14 16:12:09 -08:00
Kubernetes Prow Robot
dcee8834b5
Merge pull request #122775 from thockin/codegen_s_base_file_g
update-codegen: rename "base"->"file" for clarity
2024-01-15 01:08:39 +01:00
Kubernetes Prow Robot
908a958bb1
Merge pull request #122771 from thockin/make_verify-fieldname-docs_actually_error
Make verify-fieldname-docs actually error
2024-01-14 23:57:44 +01:00
Tim Hockin
0f849d3b55
update-codegen: rename "base"->"file" for clarity 2024-01-14 10:41:59 -08:00
Tim Hockin
f2b550180c
codegen: don't use xargs w/ maybe-empty input
GNU xargs has a `-r, --no-run-if-empty` option but I don't think we want
to depend on GNU (thanks, MacOS).

Why?  Sometimes, when you are messing with codegens, you end up with an
empty input and then it just hangs.
2024-01-14 10:38:34 -08:00
Tim Hockin
8b8f0a70cd
Make verify-fieldname-docs actually error
Sadly, cmd/fieldnamedocscheck did not exit non-zero when it needed to.

Fix the one thing it flagged.
Add it to verify-quick
2024-01-14 10:32:08 -08:00
Benjamin Elder
08645984b0 Revert "Save a list of images used by e2e.test"
This reverts commit a3c4a60995.
2024-01-12 13:15:01 -08:00
Patrick Ohly
d954b25b11 hack/tools: bump logcheck to v0.8.1
This enables the usage of the new SafePtr in code which needs to support
contextual logging.
2024-01-12 14:39:50 +01:00
Davanum Srinivas
ddbf3ab662
local-up-cluster: use the newly built library always
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-11 08:13:21 -05:00
Kubernetes Prow Robot
c9158e9a19
Merge pull request #122595 from dims/support-building-with-and-without-cloud-providers
KUBE_PROVIDERLESS - Support building with and without cloud providers
2024-01-11 05:42:23 +01:00
Davanum Srinivas
ce263d8828
Address comments during Review
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-09 15:52:16 -05:00
Ziqi Zhao
6b5e973e5f
Migrate cmd/kube-proxy to contextual logging (#122197)
* cmd/kube-proxy support contextual logging

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

* use ktesting.NewTestContext(t) in unit test

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

* use ktesting.NewTestContext(t) in unit test

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

* remove unnecessary blank line & add cmd/kube-proxy to contextual section in logcheck.conf

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

* add more contextual logging

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

* new lint yaml

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>

---------

Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>
2024-01-08 17:30:18 +01:00
Davanum Srinivas
e25e1d39bd
Add KUBE_PROVIDERLESS for CI jobs to run with providerless tag
Also ensure `test/e2e` works with providerless tag in the verify
script

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-07 15:20:57 -05:00
Nikola
5704a58810 add test for the registered feature gates 2024-01-07 18:10:25 +02:00
Mahe Tardy
73bec0f6d9 api: remove SecurityContextDeny admission plugin 2024-01-05 15:11:18 +00:00
Davanum Srinivas
2431a964af
Drop hack/verify-govet-levee
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-04 21:06:52 -05:00
Kubernetes Prow Robot
7db7824d85
Merge pull request #122178 from saschagrunert/cni-plugins
Update cni-plugins to v1.4.0
2024-01-04 18:00:07 +01:00
Kubernetes Prow Robot
88d497d401
Merge pull request #118626 from borg-land/use-e2-instance-types
Switch to e2 machine types
2024-01-04 16:49:14 +01:00
Davanum Srinivas
a3c4a60995
Save a list of images used by e2e.test
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2024-01-03 08:07:47 -05:00
Kubernetes Prow Robot
be62153915
Merge pull request #122416 from pohly/e2e-gomega-be-true-or-false
e2e: forbid usage of gomega.BeTrue/False
2024-01-02 16:46:57 +01:00
Kubernetes Prow Robot
9680c84b9c
Merge pull request #121836 from skitt/verify-no-vendor-cycles-go
verify-no-vendor-cycles: set up Go environment
2024-01-02 16:46:39 +01:00
Kubernetes Prow Robot
58d023e178
Merge pull request #121894 from thockin/build_trimpath
build: use -trimpath in non-DBG mode
2023-12-29 04:38:51 +01:00
Tim Hockin
e3686246ea
Fix update-openapi-spec to not change caller CWD 2023-12-25 13:59:10 -08:00
Kubernetes Prow Robot
40c729c680
Merge pull request #122436 from pohly/log-warn-context
hack/tools: bump logtools to v0.8.0
2023-12-22 14:32:38 +01:00
Patrick Ohly
51f3b705c6 hack/tools: bump logtools to v0.8.0
This adds support for marking functions and methods as "don't use in code which
supports contextual logging".
2023-12-21 15:12:40 +01:00
Mohamed Omar Zaian
c8a2d5684d etcd: Update to version 3.5.11 2023-12-20 11:18:35 +01:00
Patrick Ohly
36cceff0a3 e2e: forbid usage of gomega.BeTrue/False
`BeTrue` without explanation in `Should` just prints "false is not true", which
isn't a useful failure message. Even with an explanation that message is still
printed, which is just noise. The new BeTrue/FalseBecause avoid that by
requiring that an explanation is provided and using that instead of "false is
not true".

In Kubernetes, we can enforce the usage of those better alternatives or the
if+Fail combination via forbidigo. Because we have existing code which still
needs to be updated, this can only be a hint for now.

Some examples found with this:

ERROR: test/e2e/apimachinery/protocol.go:75:20: use of `o.BeTrue` forbidden because "it does not produce a good failure message, use BeTrueBecause with an explicit printf-style failure message instead or plain Go: if ... { ginkgo.Fail(...) }" (forbidigo)
ERROR: 			o.Expect(ok).To(o.BeTrue())
ERROR: 			                ^

ERROR: test/e2e_node/unknown_pods_test.go:163:52: use of `gomega.BeTrue` forbidden because "it does not produce a good failure message, use BeTrueBecause with an explicit printf-style failure message instead or plain Go: if ... { ginkgo.Fail(...) }" (forbidigo)
ERROR: 			}, f.Timeouts.PodStart, f.Timeouts.Poll).Should(gomega.BeTrue())
ERROR: 			                                                ^

The solution might also be to write a custom matcher, but that is a bit hard to
explain in the forbidigo message.
2023-12-20 10:11:56 +01:00
James Blair
b6c1f8ef08
Fix etcd repository path to prevent redirects.
Signed-off-by: James Blair <mail@jamesblair.net>
2023-12-16 19:50:02 +13:00
Kubernetes Prow Robot
d19420f3ec
Merge pull request #122210 from dims/trying-to-fix-local-up-cluster
Explicitly stop/start docker to fix local-up-cluster.sh
2023-12-15 09:45:49 +01:00
Patrick Ohly
ced99383d5 logcheck: remove redundant entry for pkg/scheduler
Contextual implies structured, so listing pkg/scheduler as contextual is
enough.
2023-12-14 20:22:04 +01:00
Patrick Ohly
b450224c12 golangci-lint: inline logcheck configuration
This has the advantage that the golangci-lint cache gets invalidated
automatically each time the logcheck config changes.
2023-12-14 20:21:58 +01:00
Patrick Ohly
49084fe577 golangci-lint: logcheck v0.7.0, golangci-lint v1.55.2
This adds support for the new golangci-lint plugin interface and settings
mechanism.
2023-12-14 20:21:19 +01:00
Kubernetes Prow Robot
e12d4b63d6
Merge pull request #121773 from pohly/zapr-update
dependencies: zapr v1.3.0, zap v1.26.0
2023-12-14 18:14:22 +01:00
Kubernetes Prow Robot
485e57c395
Merge pull request #122250 from thockin/fix_verify-licenses
Fix verify-licenses.sh
2023-12-14 07:27:39 +01:00
Kubernetes Prow Robot
407c2c3015
Merge pull request #122230 from thockin/update-vendor_cleanups
Small update-vendor cleanup
2023-12-14 07:27:12 +01:00
Kubernetes Prow Robot
abb336b9c9
Merge pull request #122228 from thockin/cleaner_make_clean
Simpler and less noisy make-clean
2023-12-14 07:26:54 +01:00