• Kubernetes Submit Queue's avatar
    Merge pull request #29683 from xiangpengzhao/add-make-help · 23d7615e
    Kubernetes Submit Queue authored
    Automatic merge from submit-queue
    
    Add "make help" to list all make targets and help info
    
    As discussed in [PR#29320comment](https://github.com/kubernetes/kubernetes/pull/29320#issuecomment-234420145), add a `make help` to make the use of `make` easy. Though it works well on my Ubuntu now (see the output as below, not sure if it still works on other systems), I believe the scripts are somewhat ugly, so, any suggestion for optimization is welcome.
    
    BTW, I intended to list targets by groups, but it's hard to do that automatically. So I just list them in alphabetical order. I think this may be enough.
    
    There are still some TODOs (also mentioned in the Makefile):
    1. make EXCLUDE_TARGET auto-generated when there are other files in cmd/
    2. should we exclude the target "cmd/libs" but include "cmd/libs/go2idl/*"?
    3. should we let `help` be the first/default target? It will show the help when we just type `make`.
    
    1 and 2 are to exclude the invalid targets generated by `$(notdir $(abspath $(wildcard cmd/*/)))`:
    - OWNERS is just a file, it can't be a target
    - libs itself cannot be built
    
    /cc @thockin @jfrazelle @MHBauer @dims 
    
    Output:
    
    ```
    root@vm:/home/paas/zxp/code/k8s/fork/kubernetes# make help
    --------------------------------------------------------------------------------
    all
    # Build code.
    #
    # Args:
    #   WHAT: Directory names to build.  If any of these directories has a 'main'
    #     package, the build will produce executable files under _output/go/bin.
    #     If not specified, "everything" will be built.
    #   GOFLAGS: Extra flags to pass to 'go' when building.
    #   GOLDFLAGS: Extra linking flags passed to 'go' when building.
    #   GOGCFLAGS: Additional go compile flags passed to 'go' when building.
    #
    # Example:
    #   make
    #   make all
    #   make all WHAT=cmd/kubelet GOFLAGS=-v
    #   make all GOGCFLAGS="-N -l"
    #     Note: Use the -N -l options to disable compiler optimizations an inlining.
    #           Using these build options allows you to subsequently use source
    #           debugging tools like delve.
    ---------------------------------------------------------------------------------
    check
    # Build and run tests.
    #
    # Args:
    #   WHAT: Directory names to test.  All *_test.go files under these
    #     directories will be run.  If not specified, "everything" will be tested.
    #   TESTS: Same as WHAT.
    #   GOFLAGS: Extra flags to pass to 'go' when building.
    #   GOLDFLAGS: Extra linking flags to pass to 'go' when building.
    #   GOGCFLAGS: Additional go compile flags passed to 'go' when building.
    #
    # Example:
    #   make check
    #   make test
    #   make check WHAT=pkg/kubelet GOFLAGS=-v
    ---------------------------------------------------------------------------------
    clean
    # Remove all build artifacts.
    #
    # Example:
    #   make clean
    #
    # TODO(thockin): call clean_generated when we stop committing generated code.
    ---------------------------------------------------------------------------------
    clean_generated
    # Remove all auto-generated artifacts.
    #
    # Example:
    #   make clean_generated
    ---------------------------------------------------------------------------------
    clean_meta
    # Remove make-related metadata files.
    #
    # Example:
    #   make clean_meta
    ---------------------------------------------------------------------------------
    cross
    # Cross-compile for all platforms
    #
    # Example:
    #   make cross
    ---------------------------------------------------------------------------------
    federation-apiserver
    federation-controller-manager
    genfeddocs
    # Add rules for all directories in federation/cmd/
    #
    # Example:
    #   make federation-apiserver federation-controller-manager
    ---------------------------------------------------------------------------------
    gendocs
    genkubedocs
    genman
    genswaggertypedocs
    genutils
    genyaml
    hyperkube
    kube-apiserver
    kube-controller-manager
    kubectl
    kube-dns
    kubelet
    kubemark
    kube-proxy
    kubernetes-discovery
    libs
    linkcheck
    mungedocs
    # Add rules for all directories in cmd/
    #
    # Example:
    #   make kubectl kube-proxy
    ---------------------------------------------------------------------------------
    generated_files
    # Produce auto-generated files needed for the build.
    #
    # Example:
    #   make generated_files
    ---------------------------------------------------------------------------------
    ginkgo
    # Build ginkgo
    #
    # Example:
    # make ginkgo
    ---------------------------------------------------------------------------------
    help
    # Print make targets and help info
    #
    # Example:
    # make help
    ---------------------------------------------------------------------------------
    quick-release
    # Build a release, but skip tests
    #
    # Example:
    #   make release-skip-tests
    ---------------------------------------------------------------------------------
    release
    # Build a release
    #
    # Example:
    #   make release
    ---------------------------------------------------------------------------------
    release-skip-tests
    # Build a release, but skip tests
    #
    # Example:
    #   make release-skip-tests
    ---------------------------------------------------------------------------------
    test
    # Build and run tests.
    #
    # Args:
    #   WHAT: Directory names to test.  All *_test.go files under these
    #     directories will be run.  If not specified, "everything" will be tested.
    #   TESTS: Same as WHAT.
    #   GOFLAGS: Extra flags to pass to 'go' when building.
    #   GOLDFLAGS: Extra linking flags to pass to 'go' when building.
    #   GOGCFLAGS: Additional go compile flags passed to 'go' when building.
    #
    # Example:
    #   make check
    #   make test
    #   make check WHAT=pkg/kubelet GOFLAGS=-v
    ---------------------------------------------------------------------------------
    test-cmd
    # Build and run cmdline tests.
    #
    # Example:
    #   make test-cmd
    ---------------------------------------------------------------------------------
    test-e2e
    # Build and run end-to-end tests.
    #
    # Example:
    #   make test-e2e
    ---------------------------------------------------------------------------------
    test-e2e-node
    # Build and run node end-to-end tests.
    #
    # Args:
    #  FOCUS: Regexp that matches the tests to be run.  Defaults to "".
    #  SKIP: Regexp that matches the tests that needs to be skipped.  Defaults
    #    to "".
    #  RUN_UNTIL_FAILURE: If true, pass --untilItFails to ginkgo so tests are run
    #    repeatedly until they fail.  Defaults to false.
    #  REMOTE: If true, run the tests on a remote host instance on GCE.  Defaults
    #    to false.
    #  IMAGES: For REMOTE=true only.  Comma delimited list of images for creating
    #    remote hosts to run tests against.  Defaults to a recent image.
    #  LIST_IMAGES: If true, don't run tests.  Just output the list of available
    #    images for testing.  Defaults to false.
    #  HOSTS: For REMOTE=true only.  Comma delimited list of running gce hosts to
    #    run tests against.  Defaults to "".
    #  DELETE_INSTANCES: For REMOTE=true only.  Delete any instances created as
    #    part of this test run.  Defaults to false.
    #  ARTIFACTS: For REMOTE=true only.  Local directory to scp test artifacts into
    #    from the remote hosts.  Defaults to ""/tmp/_artifacts".
    #  REPORT: For REMOTE=false only.  Local directory to write juntil xml results
    #    to.  Defaults to "/tmp/".
    #  CLEANUP: For REMOTE=true only.  If false, do not stop processes or delete
    #    test files on remote hosts.  Defaults to true.
    #  IMAGE_PROJECT: For REMOTE=true only.  Project containing images provided to
    #  IMAGES.  Defaults to "kubernetes-node-e2e-images".
    #  INSTANCE_PREFIX: For REMOTE=true only.  Instances created from images will
    #    have the name "-".  Defaults to "test".
    #  INSTANCE_METADATA: For REMOTE=true and running on GCE only.
    #
    # Example:
    #   make test-e2e-node FOCUS=Kubelet SKIP=container
    #   make test-e2e-node REMOTE=true DELETE_INSTANCES=true
    #   make test-e2e-node TEST_ARGS="--cgroups-per-qos=true"
    # Build and run tests.
    ---------------------------------------------------------------------------------
    test-integration
    # Build and run integration tests.
    #
    # Example:
    #   make test-integration
    ---------------------------------------------------------------------------------
    verify
    # Runs all the presubmission verifications.
    #
    # Args:
    #   BRANCH: Branch to be passed to verify-godeps.sh script.
    #
    # Example:
    #   make verify
    #   make verify BRANCH=branch_x
    ---------------------------------------------------------------------------------
    vet
    # Run 'go vet'.
    #
    # Args:
    #   WHAT: Directory names to vet.  All *.go files under these
    #     directories will be vetted.  If not specified, "everything" will be
    #     vetted.
    #
    # Example:
    #   make vet
    #   make vet WHAT=pkg/kubelet
    ---------------------------------------------------------------------------------
    ```
    23d7615e
Name
Last commit
Last update
.github Loading commit data...
Godeps Loading commit data...
api Loading commit data...
build-tools Loading commit data...
cluster Loading commit data...
cmd Loading commit data...
docs Loading commit data...
examples Loading commit data...
federation Loading commit data...
hack Loading commit data...
hooks Loading commit data...
logo Loading commit data...
pkg Loading commit data...
plugin Loading commit data...
staging Loading commit data...
test Loading commit data...
third_party Loading commit data...
vendor Loading commit data...
.gazelcfg.json Loading commit data...
.generated_docs Loading commit data...
.generated_files Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
BUILD Loading commit data...
CHANGELOG.md Loading commit data...
CONTRIBUTING.md Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
Makefile.generated_files Loading commit data...
OWNERS Loading commit data...
OWNERS_ALIASES Loading commit data...
README.md Loading commit data...
Vagrantfile Loading commit data...
WORKSPACE Loading commit data...
code-of-conduct.md Loading commit data...
labels.yaml Loading commit data...