kubernetes/hack
Patrick Ohly ce9e668a93 golangci-lint: suppress one issue, demote others to "hints"
The voting in https://github.com/kubernetes/kubernetes/issues/117288 led to
one check that got rejected ("ifElseChain: rewrite if-else to switch
statement") and several that are "nice to know".

golangci-lint's support for issue "severity" is too limited to identify "nice
to know" issues in the output (filtering is only by linter without considering
the issue text; not part of text output). Therefore a third configuration gets
added which emits all issues (must fix and nits). The intention is to use
the "strict" configuration in pull-kubernetes-verify and the "hints"
configuration in a new non-blocking pull-kubernetes-linter-hints.

That way, "must fix" issues will block merging while issues that may be useful
will show up in a failed optional job. However, that job then also contains
"must fix" issues, partly because filtering out those would make the
configuration a lot larger and is likely to be unreliably (all "must fix"
issues would need to be identified and listed), partly because it may be useful
to have all issues in one place.

The previous approach of manually keeping two configs in sync with special
comments didn't scale to three configs. Now a single golangci.yaml.in with
text/template constructs contains the source for all three configs. A new
simple CLI frontend for text/template (cmd/gotemplate) is used by
hack/update-golangci-lint-config.sh to generate the three flavors.
2023-08-22 20:39:23 +02:00
..
boilerplate Cleanup boilerpate.py 2023-05-30 00:58:32 +03: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 Defer builds to test-cmd and test-integration targets 2023-02-01 15:35:14 -05:00
lib hack: move common "verify generated" shell code into function 2023-08-22 20:39:23 +02:00
make-rules Make gomaxprocs install optional, limit to tests 2023-08-16 09:33:02 -04:00
testdata Move cri/streaming to k8s.io/kubelet staging repository 2023-06-05 08:08:18 +02:00
tools update to golangci-lint v1.54.1 + go-ruleguard v0.4.0 2023-08-16 09:07:30 +02:00
verify-flags kubelet: create top-level traces for pod sync and GC 2023-03-11 10:42:14 +01:00
.descriptions_failures Add missing comments in APF API types 2021-06-25 00:27:40 -04:00
.import-aliases scheduler: remove deprecated v1beta2 KubeSchedulerConfiguration 2023-05-03 21:43:19 +08:00
.spelling_failures Add gimme 2023-02-01 16:34:23 -05: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 fix: use dl.k8s.io, not kubernetes-release bucket 2023-05-13 10:57:41 +00:00
ginkgo-e2e.sh Fix ginkgo deprecation warning 2023-05-31 12:53:11 +03:00
golangci-hints.yaml golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
golangci-strict.yaml golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
golangci.yaml golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
golangci.yaml.in golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
grab-profiles.sh Fix exit code check in hack/grab-profiles.sh 2021-05-17 14:47:05 +08:00
install-etcd.sh
install-protoc.sh Add helper script to install protoc 2023-01-26 18:00:08 -05:00
lint-dependencies.sh exit 1 if status are not as expected(order) 2023-06-18 14:09:50 +08:00
list-feature-tests.sh
local-up-cluster.sh Add LIMITED_SWAP env var to enable limited swap 2023-07-14 14:52:27 +03:00
logcheck.conf kube-controller-manager: finish conversion to contextual logging 2023-07-12 14:57:29 +02:00
logcheck.yaml golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02: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 lavalamp is taking a long break 2023-05-11 16:43:38 +00: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 Catch direct references to unwanted dependencies in kubernetes modules 2023-08-02 15:44:25 -04: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 Use the same report files as before 2023-05-09 19:33:21 -07: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 CRD compatibility objects 2023-02-27 14:12:59 -05:00
update-generated-docs.sh
update-generated-proto-bindings-dockerized.sh Check protoc version strictly 2023-01-26 18:00:06 -05:00
update-generated-protobuf-dockerized.sh Check protoc version strictly 2023-01-26 18:00:06 -05: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-gofmt.sh Make update-gofmt use ls-files 2023-01-22 15:16:23 -08:00
update-golangci-lint-config.sh golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
update-import-aliases.sh
update-internal-modules.sh Add k8s.io/kms/internal/plugins/mock to internal modules 2023-03-14 16:31:54 -04:00
update-kustomize.sh Update kubectl kustomize to kyaml/v0.14.1, cmd/config/v0.11.1, api/v0.13.2, kustomize/v5.0.1 2023-03-14 11:40:28 -05:00
update-mocks.sh cleanup update-mocks.sh 2023-04-21 16:15:21 -07:00
update-netparse-cve.sh Make update-netparse-cve use ls-files 2023-01-22 15:21:37 -08:00
update-openapi-spec.sh Capture discovery API output in test fixtures 2023-05-15 14:18:18 -04:00
update-translations.sh i18n: Fix bug where package-level variables are not translated. 2022-11-21 22:48:42 -05:00
update-vendor-licenses.sh Licensing: skip modules with fewer subdirs than mods 2023-01-03 16:48:35 +01:00
update-vendor.sh prep for go1.21: use -e in go list 2023-08-17 17:46:30 +05:30
update-yamlfmt.sh call kube::golang::setup_env before setting up worktree 2023-04-21 16:15:21 -07: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 hack: move common "verify generated" shell code into function 2023-08-22 20:39:23 +02:00
verify-conformance-requirements.sh fix make verify (#115871) 2023-02-22 07:17:56 -08:00
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 Drop zeitgeist from tools go.mod 2023-05-17 08:37:53 -04:00
verify-fieldname-docs.sh Fix the name violation in apiextensions.k8s.io/v1,CustomResourceConversion, remove the failures file 2023-01-19 22:08:29 +08:00
verify-flags-underscore.py use python3 in hack 2023-01-12 11:20:41 +08:00
verify-generated-docs.sh
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-gofmt.sh cleanup verify-gofmt.sh 2021-03-07 12:51:33 -08:00
verify-golangci-lint-config.sh golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
verify-golangci-lint-pr.sh verify: produce JUnit file also for pull-kubernetes-verify-strict-lint 2023-06-02 17:38:14 +02:00
verify-golangci-lint.sh golangci-lint: suppress one issue, demote others to "hints" 2023-08-22 20:39:23 +02:00
verify-govet-levee.sh verify-govet-levee.sh: optimize "go list" 2023-03-03 07:51:04 +01:00
verify-import-aliases.sh
verify-import-boss.sh Restrict what imports get into code within test/e2e_node 2023-08-21 15:04:23 -04:00
verify-imports.sh
verify-internal-modules.sh hack: move common "verify generated" shell code into function 2023-08-22 20:39:23 +02:00
verify-licenses.sh call kube::golang::setup_env before setting up worktree 2023-04-21 16:15:21 -07:00
verify-mocks.sh hack: move common "verify generated" shell code into function 2023-08-22 20:39:23 +02: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-docs-urls.sh Add a script to verify that URLs in API documentation are valid 2023-03-13 11:37:59 -07:00
verify-openapi-spec.sh Capture discovery API output in test fixtures 2023-05-15 14:18:18 -04: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 kubelet: Force deleted pods can fail to move out of terminating 2023-03-08 22:03:51 -06:00
verify-publishing-bot.py use python3 in hack 2023-01-12 11:20:41 +08: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
verify-staging-meta-files.sh
verify-test-code.sh e2e framework: deprecate gomega wrappers 2023-02-23 09:51:42 +01:00
verify-test-featuregates.sh Handle AllAlpha and AllBeta in SetFeatureGateDuringTest 2023-03-02 22:24:19 -05:00
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 Improve vendor verification works for each staging repo 2023-01-10 09:30:47 -05:00
verify-yamlfmt.sh hack: move common "verify generated" shell code into function 2023-08-22 20:39:23 +02: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.