github.com/AliyunContainerService/cli@v0.0.0-20181009023821-814ced4b30d0/docker.Makefile (about) 1 # 2 # github.com/docker/cli 3 # 4 # Makefile for developing using Docker 5 # 6 7 DEV_DOCKER_IMAGE_NAME = docker-cli-dev$(IMAGE_TAG) 8 BINARY_NATIVE_IMAGE_NAME = docker-cli-native$(IMAGE_TAG) 9 LINTER_IMAGE_NAME = docker-cli-lint$(IMAGE_TAG) 10 CROSS_IMAGE_NAME = docker-cli-cross$(IMAGE_TAG) 11 VALIDATE_IMAGE_NAME = docker-cli-shell-validate$(IMAGE_TAG) 12 E2E_IMAGE_NAME = docker-cli-e2e$(IMAGE_TAG) 13 MOUNTS = -v "$(CURDIR)":/go/src/github.com/docker/cli 14 VERSION = $(shell cat VERSION) 15 ENVVARS = -e VERSION=$(VERSION) -e GITCOMMIT -e PLATFORM 16 17 # build docker image (dockerfiles/Dockerfile.build) 18 .PHONY: build_docker_image 19 build_docker_image: 20 docker build ${DOCKER_BUILD_ARGS} -t $(DEV_DOCKER_IMAGE_NAME) -f ./dockerfiles/Dockerfile.dev . 21 22 # build docker image having the linting tools (dockerfiles/Dockerfile.lint) 23 .PHONY: build_linter_image 24 build_linter_image: 25 docker build ${DOCKER_BUILD_ARGS} -t $(LINTER_IMAGE_NAME) -f ./dockerfiles/Dockerfile.lint . 26 27 .PHONY: build_cross_image 28 build_cross_image: 29 docker build ${DOCKER_BUILD_ARGS} -t $(CROSS_IMAGE_NAME) -f ./dockerfiles/Dockerfile.cross . 30 31 .PHONY: build_shell_validate_image 32 build_shell_validate_image: 33 docker build -t $(VALIDATE_IMAGE_NAME) -f ./dockerfiles/Dockerfile.shellcheck . 34 35 .PHONY: build_binary_native_image 36 build_binary_native_image: 37 docker build -t $(BINARY_NATIVE_IMAGE_NAME) -f ./dockerfiles/Dockerfile.binary-native . 38 39 .PHONY: build_e2e_image 40 build_e2e_image: 41 docker build -t $(E2E_IMAGE_NAME) --build-arg VERSION=$(VERSION) --build-arg GITCOMMIT=$(GITCOMMIT) -f ./dockerfiles/Dockerfile.e2e . 42 43 44 binary: build_binary_native_image ## build the CLI 45 docker run --rm $(ENVVARS) $(MOUNTS) $(BINARY_NATIVE_IMAGE_NAME) 46 47 build: binary ## alias for binary 48 49 .PHONY: clean 50 clean: build_docker_image ## clean build artifacts 51 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make clean 52 53 .PHONY: test-unit 54 test-unit: build_docker_image # run unit tests (using go test) 55 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make test-unit 56 57 .PHONY: test ## run unit and e2e tests 58 test: test-unit test-e2e 59 60 .PHONY: cross 61 cross: build_cross_image ## build the CLI for macOS and Windows 62 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make cross 63 64 .PHONY: binary-windows 65 binary-windows: build_cross_image ## build the CLI for Windows 66 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make $@ 67 68 .PHONY: binary-osx 69 binary-osx: build_cross_image ## build the CLI for macOS 70 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make $@ 71 72 .PHONY: dev 73 dev: build_docker_image ## start a build container in interactive mode for in-container development 74 docker run -ti $(ENVVARS) $(MOUNTS) \ 75 -v /var/run/docker.sock:/var/run/docker.sock \ 76 $(DEV_DOCKER_IMAGE_NAME) ash 77 78 shell: dev ## alias for dev 79 80 .PHONY: lint 81 lint: build_linter_image ## run linters 82 docker run -ti $(ENVVARS) $(MOUNTS) $(LINTER_IMAGE_NAME) 83 84 .PHONY: vendor 85 vendor: build_docker_image vendor.conf ## download dependencies (vendor/) listed in vendor.conf 86 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make vendor 87 88 dynbinary: build_cross_image ## build the CLI dynamically linked 89 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make dynbinary 90 91 .PHONY: authors 92 authors: ## generate AUTHORS file from git history 93 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make authors 94 95 .PHONY: manpages 96 manpages: build_docker_image ## generate man pages from go source and markdown 97 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make manpages 98 99 .PHONY: yamldocs 100 yamldocs: build_docker_image ## generate documentation YAML files consumed by docs repo 101 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make yamldocs 102 103 .PHONY: shellcheck 104 shellcheck: build_shell_validate_image ## run shellcheck validation 105 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(VALIDATE_IMAGE_NAME) make shellcheck 106 107 .PHONY: test-e2e ## run e2e tests 108 test-e2e: test-e2e-non-experimental test-e2e-experimental test-e2e-connhelper-ssh 109 110 .PHONY: test-e2e-experimental 111 test-e2e-experimental: build_e2e_image 112 docker run -e DOCKERD_EXPERIMENTAL=1 --rm -v /var/run/docker.sock:/var/run/docker.sock $(E2E_IMAGE_NAME) 113 114 .PHONY: test-e2e-non-experimental 115 test-e2e-non-experimental: build_e2e_image 116 docker run --rm -v /var/run/docker.sock:/var/run/docker.sock $(E2E_IMAGE_NAME) 117 118 .PHONY: test-e2e-connhelper-ssh 119 test-e2e-connhelper-ssh: build_e2e_image 120 docker run -e TEST_CONNHELPER=ssh -e DOCKERD_EXPERIMENTAL=1 --rm -v /var/run/docker.sock:/var/run/docker.sock $(E2E_IMAGE_NAME) 121 122 .PHONY: help 123 help: ## print this help 124 @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf "\033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST)