# Old-skool build tools. # # Targets (see each target for more information): # all: Build code. # build: Build code. # check: Run unit tests. # test: Run all tests. # run: Run all-in-one server # clean: Clean up. OUT_DIR = _output OS_OUTPUT_GOPATH ?= 1 export GOFLAGS export TESTFLAGS # If set to 1, create an isolated GOPATH inside _output using symlinks to avoid # other packages being accidentally included. Defaults to on. export OS_OUTPUT_GOPATH # May be used to set additional arguments passed to the image build commands for # mounting secrets specific to a build environment. export OS_BUILD_IMAGE_ARGS # Tests run using `make` are most often run by the CI system, so we are OK to # assume the user wants jUnit output and will turn it off if they don't. JUNIT_REPORT ?= true # Build code. # # Args: # WHAT: Directory names to build. If any of these directories has a 'main' # package, the build will produce executable files under $(OUT_DIR)/local/bin. # If not specified, "everything" will be built. # GOFLAGS: Extra flags to pass to 'go' when building. # TESTFLAGS: Extra flags that should only be passed to hack/test-go.sh # # Example: # make # make all # make all WHAT=cmd/oc GOFLAGS=-v all build: hack/build-go.sh $(WHAT) $(GOFLAGS) .PHONY: all build # Build the test binaries. # # Example: # make build-tests build-tests: hack/build-go.sh test/extended/extended.test hack/build-go.sh test/integration/integration.test -tags='integration docker' .PHONY: build-tests # Run core verification and all self contained tests. # # Example: # make check check: | build verify $(MAKE) test-unit test-cmd -o build -o verify .PHONY: check # Verify code conventions are properly setup. # # Example: # make verify verify: build # build-tests task has been disabled until we can determine why memory usage is so high { \ hack/verify-gofmt.sh ||r=1;\ hack/verify-govet.sh ||r=1;\ hack/verify-generated-bootstrap-bindata.sh ||r=1;\ hack/verify-generated-deep-copies.sh ||r=1;\ hack/verify-generated-conversions.sh ||r=1;\ hack/verify-generated-clientsets.sh ||r=1;\ hack/verify-generated-completions.sh ||r=1;\ hack/verify-generated-docs.sh ||r=1;\ hack/verify-cli-conventions.sh ||r=1;\ hack/verify-generated-protobuf.sh ||r=1;\ hack/verify-generated-swagger-descriptions.sh ||r=1;\ hack/verify-generated-swagger-spec.sh ||r=1;\ exit $$r ;\ } .PHONY: verify # Verify commit comments. # # Example: # make verify-commits verify-commits: hack/verify-upstream-commits.sh .PHONY: verify-commits # Update all generated artifacts. # # Example: # make update update: build hack/update-generated-bootstrap-bindata.sh hack/update-generated-deep-copies.sh hack/update-generated-conversions.sh hack/update-generated-clientsets.sh hack/update-generated-completions.sh hack/update-generated-docs.sh hack/update-generated-protobuf.sh hack/update-generated-swagger-descriptions.sh hack/update-generated-swagger-spec.sh .PHONY: update # Build and run the complete test-suite. # # Example: # make test test: test-tools test-integration test-assets test-end-to-end .PHONY: test # Run unit 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. # TESTFLAGS: Extra flags that should only be passed to hack/test-go.sh # # Example: # make test-unit # make test-unit WHAT=pkg/build TESTFLAGS=-v test-unit: TEST_KUBE=true GOTEST_FLAGS="$(TESTFLAGS)" hack/test-go.sh $(WHAT) $(TESTS) .PHONY: test-unit # Run integration tests. Compiles its own tests, cannot be run # in parallel with any other go compilation. # # Example: # make test-integration test-integration: KUBE_COVER=" " KUBE_RACE=" " hack/test-integration.sh .PHONY: test-integration # Run command tests. Uses whatever binaries are currently built. # # Example: # make test-cmd test-cmd: build hack/test-cmd.sh .PHONY: test-cmd # Run end to end tests. Uses whatever binaries are currently built. # # Example: # make test-end-to-end test-end-to-end: build hack/test-end-to-end.sh .PHONY: test-end-to-end # Run tools tests. # # Example: # make test-tools test-tools: hack/test-tools.sh .PHONY: test-tools # Run assets tests. # # Example: # make test-assets test-assets: ifeq ($(TEST_ASSETS),true) hack/test-assets.sh endif .PHONY: test-assets # Run extended tests. # # Args: # SUITE: Which Bash entrypoint under test/extended/ to use. Don't include the # ending `.sh`. Ex: `core`. # FOCUS: Literal string to pass to `--ginkgo.focus=` # # Example: # make test-extended SUITE=core # make test-extended SUITE=conformance FOCUS=pods SUITE ?= conformance ifneq ($(strip $(FOCUS)),) FOCUS_ARG=--ginkgo.focus="$(FOCUS)" else FOCUS_ARG= endif test-extended: test/extended/$(SUITE).sh $(FOCUS_ARG) .PHONY: test-extended # Run All-in-one OpenShift server. # # Example: # make run run: export OS_OUTPUT_BINPATH=$(shell bash -c 'source hack/common.sh; echo $${OS_OUTPUT_BINPATH}') run: export PLATFORM=$(shell bash -c 'source hack/common.sh; os::build::host_platform') run: build $(OS_OUTPUT_BINPATH)/$(PLATFORM)/openshift start .PHONY: run # Remove all build artifacts. # # Example: # make clean clean: rm -rf $(OUT_DIR) .PHONY: clean # Build a release of OpenShift for linux/amd64 and the images that depend on it. # # Example: # make release release: clean OS_ONLY_BUILD_PLATFORMS="linux/amd64" hack/build-release.sh hack/build-images.sh hack/extract-release.sh .PHONY: release # Build only the release binaries for OpenShift # # Example: # make release-binaries release-binaries: clean hack/build-release.sh hack/extract-release.sh .PHONY: release-binaries # Build the cross compiled release binaries # # Example: # make build-cross build-cross: clean hack/build-cross.sh .PHONY: build-cross # Install travis dependencies # # Example: # make install-travis install-travis: hack/install-tools.sh .PHONY: install-travis # Build RPMs only for the Linux AMD64 target # # Args: # BUILD_TESTS: whether or not to build a test RPM, off by default # # Example: # make build-rpms build-rpms: BUILD_TESTS=$(BUILD_TESTS) OS_ONLY_BUILD_PLATFORMS='linux/amd64' hack/build-rpm-release.sh .PHONY: build-rpms # Build RPMs for all architectures # # Args: # BUILD_TESTS: whether or not to build a test RPM, off by default # # Example: # make build-rpms-redistributable build-rpms-redistributable: BUILD_TESTS=$(BUILD_TESTS) hack/build-rpm-release.sh .PHONY: build-rpms-redistributable # Build a release of OpenShift using tito for linux/amd64 and the images that depend on it. # # Args: # BUILD_TESTS: whether or not to build a test RPM, off by default # # Example: # make release-rpms BUILD_TESTS=1 release-rpms: clean build-rpms hack/build-images.sh hack/extract-release.sh .PHONY: release # Vendor the Origin Web Console # # Args: # GIT_REF: specifies which branch / tag of the web console to vendor. If set, then any untracked/uncommitted changes # will cause the script to exit with an error. If not set then the current working state of the web console # directory will be used. # CONSOLE_REPO_PATH: specifies a directory path to look for the web console repo. If not set it is assumed to be # a sibling to this repository. # Example: # make vendor-console vendor-console: GIT_REF=$(GIT_REF) CONSOLE_REPO_PATH=$(CONSOLE_REPO_PATH) hack/vendor-console.sh .PHONY: vendor-console