![]() 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. |
||
---|---|---|
.. | ||
boilerplate | ||
conformance | ||
e2e-internal | ||
gen-swagger-doc | ||
jenkins | ||
lib | ||
make-rules | ||
testdata | ||
tools | ||
verify-flags | ||
.descriptions_failures | ||
.import-aliases | ||
.spelling_failures | ||
benchmark-go.sh | ||
build-cross.sh | ||
build-go.sh | ||
cherry_pick_pull.sh | ||
dev-build-and-push.sh | ||
dev-build-and-up.sh | ||
dev-push-conformance.sh | ||
e2e-node-test.sh | ||
generate-docs.sh | ||
get-build.sh | ||
ginkgo-e2e.sh | ||
golangci-hints.yaml | ||
golangci-strict.yaml | ||
golangci.yaml | ||
golangci.yaml.in | ||
grab-profiles.sh | ||
install-etcd.sh | ||
install-protoc.sh | ||
lint-dependencies.sh | ||
list-feature-tests.sh | ||
local-up-cluster.sh | ||
logcheck.conf | ||
logcheck.yaml | ||
module-graph.sh | ||
OWNERS | ||
pin-dependency.sh | ||
print-workspace-status.sh | ||
README.md | ||
run-in-gopath.sh | ||
run-prometheus-on-etcd-scrapes.sh | ||
serve-prom-scrapes.sh | ||
test-go.sh | ||
test-integration.sh | ||
unwanted-dependencies.json | ||
update-all.sh | ||
update-codegen.sh | ||
update-conformance-yaml.sh | ||
update-generated-api-compatibility-data.sh | ||
update-generated-docs.sh | ||
update-generated-proto-bindings-dockerized.sh | ||
update-generated-protobuf-dockerized.sh | ||
update-generated-stable-metrics.sh | ||
update-gofmt.sh | ||
update-golangci-lint-config.sh | ||
update-import-aliases.sh | ||
update-internal-modules.sh | ||
update-kustomize.sh | ||
update-mocks.sh | ||
update-netparse-cve.sh | ||
update-openapi-spec.sh | ||
update-translations.sh | ||
update-vendor-licenses.sh | ||
update-vendor.sh | ||
update-yamlfmt.sh | ||
verify-all.sh | ||
verify-api-groups.sh | ||
verify-boilerplate.sh | ||
verify-cli-conventions.sh | ||
verify-codegen.sh | ||
verify-conformance-requirements.sh | ||
verify-conformance-yaml.sh | ||
verify-description.sh | ||
verify-e2e-test-ownership.sh | ||
verify-external-dependencies-version.sh | ||
verify-fieldname-docs.sh | ||
verify-flags-underscore.py | ||
verify-generated-docs.sh | ||
verify-generated-stable-metrics.sh | ||
verify-gofmt.sh | ||
verify-golangci-lint-config.sh | ||
verify-golangci-lint-pr.sh | ||
verify-golangci-lint.sh | ||
verify-govet-levee.sh | ||
verify-import-aliases.sh | ||
verify-import-boss.sh | ||
verify-imports.sh | ||
verify-internal-modules.sh | ||
verify-licenses.sh | ||
verify-mocks.sh | ||
verify-netparse-cve.sh | ||
verify-no-vendor-cycles.sh | ||
verify-non-mutating-validation.sh | ||
verify-openapi-docs-urls.sh | ||
verify-openapi-spec.sh | ||
verify-pkg-names.sh | ||
verify-prerelease-lifecycle-tags.sh | ||
verify-prometheus-imports.sh | ||
verify-publishing-bot.py | ||
verify-readonly-packages.sh | ||
verify-shellcheck.sh | ||
verify-spelling.sh | ||
verify-staging-meta-files.sh | ||
verify-test-code.sh | ||
verify-test-featuregates.sh | ||
verify-test-images.sh | ||
verify-typecheck-providerless.sh | ||
verify-typecheck.sh | ||
verify-vendor-licenses.sh | ||
verify-vendor.sh | ||
verify-yamlfmt.sh |
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 tomake verify
.update-all.sh
: This script is a vestigial redirection, Please do not add "real" logic. Thetrue
target of this makerule ishack/make-rules/update.sh
.It is equivalent tomake 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
.