Makefile
bab3b75c
 # Old-skool build tools.
 #
 # Targets (see each target for more information):
 #   all: Build code.
 #   build: Build code.
54386f99
 #   check: Run unit tests.
 #   test: Run all tests.
 #   run: Run all-in-one server
bab3b75c
 #   clean: Clean up.
 
c547a10c
 OUT_DIR = _output
01209c7c
 OS_OUTPUT_GOPATH ?= 1
bab3b75c
 
 export GOFLAGS
d0ca07cd
 export TESTFLAGS
5fb8206d
 # If set to 1, create an isolated GOPATH inside _output using symlinks to avoid
 # other packages being accidentally included. Defaults to on.
01209c7c
 export OS_OUTPUT_GOPATH
5fb8206d
 # 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
bab3b75c
 
8a685879
 # 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
 
bab3b75c
 # Build code.
 #
 # Args:
 #   WHAT: Directory names to build.  If any of these directories has a 'main'
6ec63154
 #     package, the build will produce executable files under $(OUT_DIR)/local/bin.
bab3b75c
 #     If not specified, "everything" will be built.
 #   GOFLAGS: Extra flags to pass to 'go' when building.
d0ca07cd
 #   TESTFLAGS: Extra flags that should only be passed to hack/test-go.sh
bab3b75c
 #
 # Example:
 #   make
 #   make all
6ec63154
 #   make all WHAT=cmd/oc GOFLAGS=-v
bab3b75c
 all build:
31f94ff8
 	hack/build-go.sh $(WHAT) $(GOFLAGS)
bab3b75c
 .PHONY: all build
 
f0eadcca
 # 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
 
af230911
 # Run core verification and all self contained tests.
bab3b75c
 #
 # Example:
 #   make check
af230911
 check: | build verify
 	$(MAKE) test-unit test-cmd -o build -o verify
54386f99
 .PHONY: check
 
af230911
 
 # Verify code conventions are properly setup.
6daa7f71
 #
 # Example:
 #   make verify
 verify: build
4851ce52
 	# 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 ;\
 	}
6daa7f71
 .PHONY: verify
 
4851ce52
 
be8ece3f
 # Verify commit comments.
 #
 # Example:
 #   make verify-commits
 verify-commits:
 	hack/verify-upstream-commits.sh
 .PHONY: verify-commits
 
f55e5424
 # Update all generated artifacts.
 #
 # Example:
 #   make update
 update: build
c7eb1bcb
 	hack/update-generated-bootstrap-bindata.sh
f55e5424
 	hack/update-generated-deep-copies.sh
c7eb1bcb
 	hack/update-generated-conversions.sh
 	hack/update-generated-clientsets.sh
 	hack/update-generated-completions.sh
f55e5424
 	hack/update-generated-docs.sh
4851ce52
 	hack/update-generated-protobuf.sh
f55e5424
 	hack/update-generated-swagger-descriptions.sh
 	hack/update-generated-swagger-spec.sh
717e5e2c
 .PHONY: update
f55e5424
 
4851ce52
 # Build and run the complete test-suite.
 #
 # Example:
 #   make test
 test: test-tools test-integration test-assets test-end-to-end
 .PHONY: test
 
af230911
 # Run unit tests.
432096e9
 #
 # Args:
af230911
 #   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.
432096e9
 #   GOFLAGS: Extra flags to pass to 'go' when building.
d0ca07cd
 #   TESTFLAGS: Extra flags that should only be passed to hack/test-go.sh
432096e9
 #
 # Example:
af230911
 #   make test-unit
0e50f40e
 #   make test-unit WHAT=pkg/build TESTFLAGS=-v
af230911
 test-unit:
a16b5ac8
 	TEST_KUBE=true GOTEST_FLAGS="$(TESTFLAGS)" hack/test-go.sh $(WHAT) $(TESTS)
af230911
 .PHONY: test-unit
432096e9
 
af230911
 # Run integration tests. Compiles its own tests, cannot be run
 # in parallel with any other go compilation.
54386f99
 #
 # Example:
af230911
 #   make test-integration
 test-integration:
 	KUBE_COVER=" " KUBE_RACE=" " hack/test-integration.sh
 .PHONY: test-integration
785538b8
 
af230911
 # Run command tests. Uses whatever binaries are currently built.
 #
 # Example:
 #   make test-cmd
 test-cmd: build
54386f99
 	hack/test-cmd.sh
af230911
 .PHONY: test-cmd
 
 # Run end to end tests. Uses whatever binaries are currently built.
 #
 # Example:
4b71f38d
 #   make test-end-to-end
af230911
 test-end-to-end: build
 	hack/test-end-to-end.sh
 .PHONY: test-end-to-end
 
 # Run tools tests.
 #
 # Example:
04da47d1
 #   make test-tools
af230911
 test-tools:
3da7c1aa
 	hack/test-tools.sh
af230911
 .PHONY: test-tools
 
04da47d1
 # Run assets tests.
 #
 # Example:
0e50f40e
 #   make test-assets
af230911
 test-assets:
 ifeq ($(TEST_ASSETS),true)
 	hack/test-assets.sh
a8873051
 endif
af230911
 .PHONY: test-assets
785538b8
 
b428f891
 # 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
62e643c7
 ifneq ($(strip $(FOCUS)),)
 	FOCUS_ARG=--ginkgo.focus="$(FOCUS)"
 else
 	FOCUS_ARG=
 endif
b428f891
 test-extended:
62e643c7
 	test/extended/$(SUITE).sh $(FOCUS_ARG)
b428f891
 .PHONY: test-extended
 
bab3b75c
 # Run All-in-one OpenShift server.
 #
 # Example:
 #   make run
af230911
 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')
bab3b75c
 run: build
5f8790a2
 	$(OS_OUTPUT_BINPATH)/$(PLATFORM)/openshift start
bab3b75c
 .PHONY: run
 
 # Remove all build artifacts.
 #
 # Example:
 #   make clean
 clean:
f0eadcca
 	rm -rf $(OUT_DIR)
bab3b75c
 .PHONY: clean
 
0e50f40e
 # Build a release of OpenShift for linux/amd64 and the images that depend on it.
366baa89
 #
 # Example:
04d566a0
 #   make release
366baa89
 release: clean
19d2b95b
 	OS_ONLY_BUILD_PLATFORMS="linux/amd64" hack/build-release.sh
366baa89
 	hack/build-images.sh
04d566a0
 	hack/extract-release.sh
366baa89
 .PHONY: release
04d566a0
 
 # Build only the release binaries for OpenShift
 #
 # Example:
 #   make release-binaries
 release-binaries: clean
 	hack/build-release.sh
 	hack/extract-release.sh
5f8790a2
 .PHONY: release-binaries
af230911
 
26bd2e50
 # Build the cross compiled release binaries
 #
 # Example:
 #   make build-cross
 build-cross: clean
 	hack/build-cross.sh
 .PHONY: build-cross
 
af230911
 # Install travis dependencies
 #
def0ce81
 # Example:
 #   make install-travis
af230911
 install-travis:
 	hack/install-tools.sh
 .PHONY: install-travis
 
63de6102
 # Build RPMs only for the Linux AMD64 target
 #
f53ffe97
 # Args:
 #   BUILD_TESTS: whether or not to build a test RPM, off by default
 #
63de6102
 # Example:
 #   make build-rpms
 build-rpms:
f53ffe97
 	BUILD_TESTS=$(BUILD_TESTS) OS_ONLY_BUILD_PLATFORMS='linux/amd64' hack/build-rpm-release.sh
63de6102
 .PHONY: build-rpms
 
 # Build RPMs for all architectures
 #
f53ffe97
 # Args:
 #   BUILD_TESTS: whether or not to build a test RPM, off by default
 #
63de6102
 # Example:
 #   make build-rpms-redistributable
 build-rpms-redistributable:
f53ffe97
 	BUILD_TESTS=$(BUILD_TESTS) hack/build-rpm-release.sh
63de6102
 .PHONY: build-rpms-redistributable
82e32294
 
9259db0c
 # Build a release of OpenShift using tito for linux/amd64 and the images that depend on it.
 #
f53ffe97
 # Args:
 #   BUILD_TESTS: whether or not to build a test RPM, off by default
 #
9259db0c
 # Example:
f53ffe97
 #   make release-rpms BUILD_TESTS=1
9259db0c
 release-rpms: clean build-rpms
 	hack/build-images.sh
 	hack/extract-release.sh
 .PHONY: release
 
82e32294
 # 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
be8ece3f
 .PHONY: vendor-console