kubernetes/hack
Stephen Kitt f146b4287f
Licensing: skip modules with fewer subdirs than mods
This came up when updating go-oidc. After updating go-oidc (with its
dependency tree), cloud.google.com/go was no longer used as a package
import, but still listed in the module dependency graph; as a result,
"go mod vendor" no longer pulled in cloud.google.com/go itself, but
update-vendor-licenses.sh still wanted a license file for it since it
appeared in the list of modules.

This scenario is already supposed to be handled: when a module doesn't
contain any *files* as first-level content, if the number of
subdirectories it contains *equals* the number of submodules it
contains (excluding itself), the module is skipped. This fails for
cloud.google.com/go because several submodules are included in the
module dependency graph but aren't actually used, and therefore not
vendored.

Updating the test to check that the number of subdirectories is less
than or equal to the number of expected submodules fixes this.

The correct fix would be to process the submodules first, keeping a
note of which ones really have content, then check that the top-level
module only contains subdirectories corresponding to those modules;
but it's not clear to me that this is worth the effort (especially in
a shell script).

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2023-01-03 16:48:35 +01:00
..
boilerplate Make verify-generated-swagger-docs use worktree 2022-12-26 17:17:33 -08:00
conformance e2e: accept context from Ginkgo 2022-12-10 19:50:18 +01:00
e2e-internal hack/update-bazel.sh 2021-02-28 15:17:29 -08:00
gen-swagger-doc
jenkins Remove generated file rules in make 2022-10-04 08:50:30 -07:00
lib simplify group-version-to-pkg-path() 2022-12-27 10:34:44 -08:00
make-rules make update: Use a shell array instead of string 2022-12-26 16:24:16 -08:00
testdata Updating pause image refernces to 3.9 2022-11-14 10:24:54 -08:00
tools hack/tools: update golangci-lint version (1.48.0 -> 1.50) 2022-10-20 13:51:10 +02:00
verify-flags Update sig-cli OWNERS 2022-02-14 10:55:35 -07:00
.descriptions_failures Add missing comments in APF API types 2021-06-25 00:27:40 -04:00
.import-aliases Adding new api version of admissionregistration.k8s.io v1alpha1 for CEL in Admission Control 2022-11-07 20:51:51 +00:00
.spelling_failures clean up spelling_failures 2022-06-21 17:33:46 +08:00
benchmark-go.sh
build-cross.sh
build-go.sh
cherry_pick_pull.sh Update cherry_pick_pull.sh 2022-06-26 09:21:05 +05:30
dev-build-and-push.sh
dev-build-and-up.sh
dev-push-conformance.sh Build Ginkgo binary 2022-07-08 10:46:11 +08:00
e2e-node-test.sh
generate-docs.sh
get-build.sh cluster,hack: Use community infra GCS bucket for retrieving CI builds 2021-07-03 17:04:54 -04:00
ginkgo-e2e.sh ginkgo-e2e.sh: remove deprecated --slow-spec-threshold 2022-12-21 07:55:07 +01:00
grab-profiles.sh Fix exit code check in hack/grab-profiles.sh 2021-05-17 14:47:05 +08:00
install-etcd.sh
lint-dependencies.sh Guard against merging non-canonical replace directives 2022-11-17 13:00:12 -05:00
list-feature-tests.sh
local-up-cluster.sh Tracing: sample always in hack/local-up-cluster.sh 2022-11-29 13:12:19 +01:00
logcheck.conf logcheck.conf: ensure that dra uses contextual logging 2022-11-10 20:23:50 +01:00
module-graph.sh Make sure the _output folder exists before using it from module-graph.sh 2020-07-07 01:19:59 -07:00
OWNERS Move root approvers to subdirs 2022-10-10 13:43:03 -04:00
pin-dependency.sh Stop adding explicit replace directives for all requires 2022-10-28 15:15:18 -04:00
print-workspace-status.sh Remove invalid comments in hack/lib/version.sh 2022-07-06 19:19:29 +08:00
README.md
run-in-gopath.sh
run-prometheus-on-etcd-scrapes.sh Add serving of scrapes as Prometheus metrics 2021-11-08 15:28:05 -05:00
serve-prom-scrapes.sh Fixed typo in hack/serve-prom-scrapes.sh 2022-02-04 01:33:06 -05:00
test-go.sh
test-integration.sh
unwanted-dependencies.json Merge pull request #114204 from pacoxu/order-unwanted-deps 2022-12-12 11:43:56 -08:00
update-all.sh refactor(hack): use ${BASH_SOURCE[0]} to get script name 2022-04-16 23:58:13 +08:00
update-codegen.sh codegen: safer use of 'sort' and 'xargs' 2022-12-26 16:08:59 -08:00
update-conformance-yaml.sh port conformance yaml generation to hack 2021-02-28 00:54:54 -08:00
update-generated-api-compatibility-data.sh Add check for unused API compatibility fixture files 2022-02-10 17:40:25 -05:00
update-generated-device-plugin-dockerized.sh
update-generated-device-plugin.sh
update-generated-docs.sh
update-generated-dynamic-resource-allocation-dockerized.sh kubelet: add support for dynamic resource allocation 2022-11-11 21:58:03 +01:00
update-generated-dynamic-resource-allocation.sh kubelet: add support for dynamic resource allocation 2022-11-11 21:58:03 +01:00
update-generated-kms-dockerized.sh Add staging directory for kms 2022-09-26 19:23:35 +00:00
update-generated-kms.sh
update-generated-kubelet-plugin-registration-dockerized.sh
update-generated-kubelet-plugin-registration.sh
update-generated-pod-resources-dockerized.sh Add podresources v1 API 2020-10-26 12:10:18 -07:00
update-generated-pod-resources.sh Add podresources v1 API 2020-10-26 12:10:18 -07:00
update-generated-protobuf-dockerized.sh drop vendor from go install paths 2022-05-05 08:47:33 -04:00
update-generated-protobuf.sh Add usage in some hack/update scripts 2020-05-26 21:49:38 -07:00
update-generated-runtime-dockerized.sh Remove CRI v1alpha2 2022-11-03 09:13:43 +01:00
update-generated-runtime.sh Add usage in some hack/update scripts 2020-05-26 21:49:38 -07:00
update-generated-stable-metrics.sh remove the rest of the bazel test wiring for metrics stability 2021-02-05 10:48:48 -08:00
update-generated-swagger-docs.sh Make verify-generated-swagger-docs use worktree 2022-12-26 17:17:33 -08:00
update-gofmt.sh
update-import-aliases.sh *.sh: cleanup all white noise 2020-05-29 09:56:00 +08:00
update-internal-modules.sh Rename _examples to examples 2021-01-25 10:20:46 -08:00
update-kustomize.sh kubectl version should include bundled kustomize version 2022-03-24 13:31:57 -04:00
update-mocks.sh Added update and verify scripts for automated mock generation 2021-09-03 17:40:11 +00:00
update-netparse-cve.sh update and verify netparse 2021-08-20 10:42:09 +02:00
update-openapi-spec.sh stop using deprecated klog flags 2022-09-04 21:02:43 +02:00
update-translations.sh fix translations location in update-translations.sh 2021-07-07 20:01:25 +02:00
update-vendor-licenses.sh Licensing: skip modules with fewer subdirs than mods 2023-01-03 16:48:35 +01:00
update-vendor.sh Stop adding requires for everything in the graph 2022-10-28 15:15:18 -04:00
update-yamlfmt.sh Make verify-yamlfmt.sh use git worktree 2022-12-26 17:14:58 -08:00
verify-all.sh refactor(hack): use ${BASH_SOURCE[0]} to get script name 2022-04-16 23:58:13 +08:00
verify-api-groups.sh Add discovery types 2022-10-19 17:27:25 +00:00
verify-boilerplate.sh
verify-cli-conventions.sh
verify-codegen.sh Copy make's codegen logic to update-codegen.sh 2022-10-04 08:48:39 -07:00
verify-conformance-requirements.sh
verify-conformance-yaml.sh port conformance yaml generation to hack 2021-02-28 00:54:54 -08:00
verify-description.sh hack/verify-description.sh: correctly look for versioned API types 2021-03-02 21:50:40 +05:30
verify-e2e-test-ownership.sh declare and assign seperately in hack/verify-e2e-test-ownership.sh 2022-10-19 23:46:18 -07:00
verify-external-dependencies-version.sh use sed to drop escape codes from zeitgeist output 2021-03-04 14:59:52 -08:00
verify-flags-underscore.py remove clearly unnecessary lingering BUILD file references 2022-10-04 16:47:25 -07:00
verify-generated-device-plugin.sh
verify-generated-docs.sh
verify-generated-dynamic-resource-allocation.sh kubelet: add support for dynamic resource allocation 2022-11-11 21:58:03 +01:00
verify-generated-kms.sh Add staging directory for kms 2022-09-26 19:23:35 +00:00
verify-generated-kubelet-plugin-registration.sh
verify-generated-pod-resources.sh Add podresources v1 API 2020-10-26 12:10:18 -07:00
verify-generated-protobuf.sh
verify-generated-runtime.sh Remove CRI v1alpha2 2022-11-03 09:13:43 +01:00
verify-generated-stable-metrics.sh remove the rest of the bazel test wiring for metrics stability 2021-02-05 10:48:48 -08:00
verify-generated-swagger-docs.sh Make verify-generated-swagger-docs use worktree 2022-12-26 17:17:33 -08:00
verify-gofmt.sh cleanup verify-gofmt.sh 2021-03-07 12:51:33 -08:00
verify-golangci-lint.sh [golang] Fix things commented out in 1.19rc2 2022-08-04 10:27:09 -04:00
verify-govet-levee.sh KEP-1933: add static analysis target to hack/ 2020-11-03 20:03:26 +00:00
verify-govet.sh
verify-import-aliases.sh
verify-import-boss.sh drop vendor from go install paths 2022-05-05 08:47:33 -04:00
verify-imports.sh
verify-internal-modules.sh Rename *-hack-tools.sh -> *-internal-modules.sh 2021-01-25 10:15:59 -08:00
verify-licenses.sh add workaround fix for incorrect license URL 2022-05-06 13:19:24 +05:30
verify-mocks.sh Make verify-mocks.sh use git worktree 2022-12-26 17:14:14 -08:00
verify-netparse-cve.sh update and verify netparse 2021-08-20 10:42:09 +02:00
verify-no-vendor-cycles.sh Update go.mod files to go1.18, update license vendor script 2022-05-04 10:22:27 -04:00
verify-non-mutating-validation.sh add verify script to catch most validation mutations 2021-10-08 14:37:55 -04:00
verify-openapi-spec.sh Generate openapi v3 static files 2021-11-16 17:38:54 -08:00
verify-pkg-names.sh
verify-prerelease-lifecycle-tags.sh Fix error path in file /verify-prerelease-lifecycle-tags.sh. 2021-03-06 15:32:07 +08:00
verify-prometheus-imports.sh add buckets.go to prometheus import allowlsit 2022-10-18 13:42:28 -07:00
verify-publishing-bot.py add more validation to rules.yaml 2022-11-29 15:07:34 -05:00
verify-readonly-packages.sh remove clearly unnecessary lingering BUILD file references 2022-10-04 16:47:25 -07:00
verify-shellcheck.sh Update shellcheck version (0.7.2 -> 0.8.0) and fix findings 2022-11-08 11:53:57 +01:00
verify-spelling.sh move linting dependencies to hack/tools/tools.go 2020-04-20 13:45:38 -04:00
verify-staging-meta-files.sh
verify-test-code.sh Use ExpectNoError(err) 2020-09-03 23:29:07 +00:00
verify-test-featuregates.sh
verify-test-images.sh
verify-typecheck-providerless.sh providerless tag for client-go auth plugins 2021-03-28 20:07:59 -04:00
verify-typecheck.sh Remove generated file rules in make 2022-10-04 08:50:30 -07:00
verify-vendor-licenses.sh Remove docker remote/docker-machine from build scripts 2020-12-30 12:37:51 -05:00
verify-vendor.sh remove clearly unnecessary lingering BUILD file references 2022-10-04 16:47:25 -07:00
verify-yamlfmt.sh Make verify-yamlfmt.sh use git worktree 2022-12-26 17:14:58 -08:00

Kubernetes hack GuideLines

This document describes how you can use the scripts from hack directory and gives a brief introduction and explanation of these scripts.

Overview

The hack directory contains many scripts that ensure continuous development of kubernetes, enhance the robustness of the code, improve development efficiency, etc. The explanations and descriptions of these scripts are helpful for contributors. For details, refer to the following guidelines.

Key scripts

  • verify-all.sh: This script is a vestigial redirection, Please do not add "real" logic. It is equivalent to make verify.
  • update-all.sh: This script is a vestigial redirection, Please do not add "real" logic. The true target of this makerule is hack/make-rules/update.sh.It is equivalent to make update.

Attention

Note that all scripts must be run from the Kubernetes root directory. We should run hack/verify-all.sh before submitting a PR and if anything fails run hack/update-all.sh.