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
 
 # 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
f0eadcca
 	# build-tests is disabled until we can determine why memory usage is so high
749428c4
 	hack/verify-upstream-commits.sh
6daa7f71
 	hack/verify-gofmt.sh
772b5fa0
 	hack/verify-govet.sh
c7eb1bcb
 	hack/verify-generated-bootstrap-bindata.sh
6daa7f71
 	hack/verify-generated-deep-copies.sh
 	hack/verify-generated-conversions.sh
6334b816
 	hack/verify-generated-clientsets.sh
6daa7f71
 	hack/verify-generated-completions.sh
 	hack/verify-generated-docs.sh
f55e5424
 	hack/verify-generated-swagger-descriptions.sh
c7eb1bcb
 	hack/verify-generated-swagger-spec.sh
6daa7f71
 .PHONY: verify
 
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
 	hack/update-generated-swagger-descriptions.sh
 	hack/update-generated-swagger-spec.sh
717e5e2c
 .PHONY: update
f55e5424
 
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
4e0ba9b6
 	hack/env hack/verify-generated-protobuf.sh # Test the protobuf serializations when we know Docker is available
af230911
 	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
 
af230911
 # Build and run the complete test-suite.
 #
 # Example:
 #   make test
 test: check
 	$(MAKE) test-tools test-integration test-assets -o build
 	$(MAKE) test-end-to-end -o build
 .PHONY: test
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
 
0e50f40e
 # Release the integrated components for OpenShift, origin, logging, and metrics.
 # The current tag in the Origin release (the tag that points to HEAD) is used to
 # clone and build each component. Components must have a hack/release.sh script
 # which must accept env var OS_TAG as the tag to build. Each component should push
 # its own images. See hack/release.sh and hack/push-release.sh for an example of
 # the appropriate behavior.
 #
 # Prerequisites:
 # * you must be logged into the remote registry with the appropriate
 #   credentials to push.
 # * all repositories must have a Git tag equal to the current repositories tag of
 #   HEAD
 #
 # TODO: consider making hack/release.sh be a make target (make official-release).
5829039a
 #
 # Example:
 #   make release-components
 release-components: clean
 	hack/release-components.sh
 .PHONY: release-components
 
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