Commit Graph

10065 Commits

Author SHA1 Message Date
Tim Hockin
14321ef959
Move doc-generation funcs into only caller 2024-02-29 22:07:33 -08:00
Tim Hockin
8288c06b2b
Make hack scripts use go install and assume PATH
Now that they all call setup_env, we don't need find-binary (I think).
That was originally meant to hide the diff between docker and local
builds but all these tools do local builds anyway.
2024-02-29 22:07:32 -08:00
Tim Hockin
ea3696dbcf
Remove legacy references to './output' 2024-02-29 22:07:31 -08:00
Tim Hockin
b68340e5b6
Get rid of gengo InputDirs flag 2024-02-29 22:07:23 -08:00
Tim Hockin
e78dc86288
Move import-boss to k/k, retool to not use gengo
* Moved code and tests out of gengo -> code_generator
* Reworked it to use packages.Load
* Reworked tests (still not comprehensive but pretty good?)
* Dropped test support from gengo (support for tests in
  x/tools/go/packages is pretty hostile to gengo, and nobody used it)
2024-02-29 22:07:21 -08:00
Tim Hockin
3a77592b2c
Remove gengo verify-only - unused and untested
All of our own tools emit into a tmp tree and then diff that.
2024-02-29 22:07:17 -08:00
Tim Hockin
d0dd72b01e
Move OutputFileBase flag to each tool 2024-02-29 22:07:16 -08:00
Tim Hockin
26a1a13b80
Rename output-package -> output-pkg
To parallel "output-dir".
2024-02-29 22:07:15 -08:00
Tim Hockin
6a375b8f4c
Move the OutputBase flag to each tool
...and rename to --output-dir
2024-02-29 22:07:14 -08:00
Tim Hockin
0ff7dd1943
Rename gengo DefaultGen -> GolangGenerator 2024-02-29 22:07:12 -08:00
Tim Hockin
bd31265d23
Make update-vendor log the go env 2024-02-29 22:07:08 -08:00
Tim Hockin
4320631265
codegen: Don't need to pass --logtostderr
All the tools already set it internally
2024-02-29 22:07:06 -08:00
Tim Hockin
2c0da11c0a
Make verify-shellcheck take optional args 2024-02-29 22:07:05 -08:00
Tim Hockin
19b37f046f
Rename update-generated-* dockerized
Now they don't start with "update" and confuse dumb scripts which try to
run all the updates.
2024-02-29 22:07:04 -08:00
Tim Hockin
94b709c0e2
codegen: Use single-dash for '-v' 2024-02-29 22:07:04 -08:00
Tim Hockin
6dbc754ed6
Retool typecheck to be simpler
Instead of walking paths ourselves, just let Go's packages library do
it.  This is a slight CLI change - it wants "./foo" rather than "foo".

This also flagged a few things which seem to be legit failures.
2024-02-29 22:07:00 -08:00
Tim Hockin
965341390f
Remove KUBE_GO_PACKAGE
Almost nobody should need it, and if you do, it should be an immediate
smell.
2024-02-29 22:06:58 -08:00
Tim Hockin
5a96a56c80
Fix make test-integration for workspaces 2024-02-29 22:06:57 -08:00
Tim Hockin
d61f299614
Call verify_go_version at the END of setup_env
Prior to this it would download Go, setup the environment, then (maybe)
download Go again.

I renamed verify_go_version to be internal and fixed all callers.
2024-02-29 22:06:56 -08:00
Tim Hockin
e84adf611f
Remove references to "GO111MODULE" 2024-02-29 22:06:55 -08:00
Tim Hockin
2a1147a434
Call setup_env from verify-vendor 2024-02-29 22:06:54 -08:00
Tim Hockin
d2a4a1958f
Tidy update-vendor-licenses for workspaces 2024-02-29 22:06:53 -08:00
Tim Hockin
d772f7719d
Remove defunct references to "vendor" 2024-02-29 22:06:52 -08:00
Tim Hockin
10c32b3e2f
Get rid of most references to GOPATH 2024-02-29 22:06:51 -08:00
Tim Hockin
3c2940f2ae
Kill off PRJ_SRC_PATH 2024-02-29 22:06:50 -08:00
Tim Hockin
651297220e
Fix pin-dependency for workspaces 2024-02-29 22:06:49 -08:00
Tim Hockin
1c3e701e0c
Fix verify-spelling for workspaces 2024-02-29 22:06:48 -08:00
Tim Hockin
032dd890a5
Fix verify-external-dependencies-version for workspaces 2024-02-29 22:06:47 -08:00
Tim Hockin
bff2e92edd
Fix update-netparse-cve for workspaces 2024-02-29 22:06:46 -08:00
Tim Hockin
fad5bb1cdd
Fix lint-dependencies for workspaces 2024-02-29 22:06:45 -08:00
Tim Hockin
b2b9de88eb
Fix update-import-aliases for workspaces 2024-02-29 22:06:44 -08:00
Tim Hockin
530c4352fb
Rename new::setup_env back to setup_env 2024-02-29 22:06:44 -08:00
Tim Hockin
bece9bc3f4
Remove old::setup_env 2024-02-29 22:06:43 -08:00
Tim Hockin
f9ca58efe9
Remove run-in-gopath.sh 2024-02-29 22:06:42 -08:00
Tim Hockin
b32e207256
Fix last run-in-gopath user: typecheck
This now works across modules

Verified by introducing errors in 2 different modules and running.
2024-02-29 22:06:41 -08:00
Tim Hockin
91efe7e571
Fix import-boss wrt gengo/v2 2024-02-29 22:06:40 -08:00
Tim Hockin
f772410082
Make code-gen subprojects work on gengo/v2 2024-02-29 22:06:38 -08:00
Tim Hockin
251b22a7f8
Make update-codegen protobuf work on gengo/v2 2024-02-29 22:06:38 -08:00
Tim Hockin
7506048d3f
Make update-codegen client work on gengo/v2 2024-02-29 22:06:36 -08:00
Tim Hockin
130a9f8426
Make update-codegen applyconfig work on gengo/v2 2024-02-29 22:06:34 -08:00
Tim Hockin
9c62235266
Make update-codegen informer work on gengo/v2 2024-02-29 22:06:32 -08:00
Tim Hockin
46665fa76a
Make update-codegen lister work on gengo/v2 2024-02-29 22:06:31 -08:00
Tim Hockin
1965f56f59
Make update-codegen openapi work on gengo/v2 2024-02-29 22:06:29 -08:00
Tim Hockin
5475797f43
Make update-codegen conversion work on gengo/v2 2024-02-29 22:06:28 -08:00
Tim Hockin
1e96f4e50a
Make update-codegen prerelease work on gengo/v2 2024-02-29 22:06:26 -08:00
Tim Hockin
b5b8c9d869
Make update-codegen swagger work on gengo/v2 2024-02-29 22:06:25 -08:00
Tim Hockin
8420278c7f
Make update-codegen defaulter work on gengo/v2 2024-02-29 22:06:24 -08:00
Tim Hockin
1fb4e824ba
Make update-codegen deepcopy work on gengo/v2 2024-02-29 22:06:23 -08:00
Tim Hockin
d5e8e9c29c
Change update-codegen.sh to use new setup_env
This breaks all the generators, which will be fixed subsequently.
2024-02-29 22:06:22 -08:00
Tim Hockin
db590ecd89
Fix scripts to avoid testdata 2024-02-29 22:06:21 -08:00
Tim Hockin
487cd02711
Change verify-generated to new setup_env 2024-02-29 22:06:18 -08:00
Tim Hockin
c79e5abec4
Change test-e2e-node to use new setup_env 2024-02-29 22:06:17 -08:00
Tim Hockin
7a7dff1eeb
Change verify-imports to use new setup_env
Also clean up the tool a bit and drop vendor as an explicit thing to
be handled.
2024-02-29 22:06:16 -08:00
Tim Hockin
3be358ecc1
Make verify-conformance-requirements use new setup_env 2024-02-29 22:06:15 -08:00
Tim Hockin
08622aa685
Make verify-no-vendor-cycles use new setup_env 2024-02-29 22:06:14 -08:00
Tim Hockin
854037d5b5
Change update-generated-api-compatibility-data test to new setup_env 2024-02-29 22:06:13 -08:00
Tim Hockin
cbc887a1d6
Change verify-govulncheck to new setup_env 2024-02-29 22:06:11 -08:00
Tim Hockin
024f4e9c09
Change verify-generated-docs to new setup_env 2024-02-29 22:06:10 -08:00
Tim Hockin
35aa5b3c69
Change verify-fieldname-docs to new setup_env 2024-02-29 22:06:09 -08:00
Tim Hockin
0d30f918fa
Change verify-description to new setup_env 2024-02-29 22:06:08 -08:00
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