github.com/xdlianrong208/docker-ce-comments@v17.12.1-ce-rc2+incompatible/components/cli/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 LINTER_IMAGE_NAME = docker-cli-lint$(IMAGE_TAG) 9 CROSS_IMAGE_NAME = docker-cli-cross$(IMAGE_TAG) 10 VALIDATE_IMAGE_NAME = docker-cli-shell-validate$(IMAGE_TAG) 11 MOUNTS = -v "$(CURDIR)":/go/src/github.com/docker/cli 12 VERSION = $(shell cat VERSION) 13 ENVVARS = -e VERSION=$(VERSION) -e GITCOMMIT -e PLATFORM 14 15 # build docker image (dockerfiles/Dockerfile.build) 16 .PHONY: build_docker_image 17 build_docker_image: 18 docker build ${DOCKER_BUILD_ARGS} -t $(DEV_DOCKER_IMAGE_NAME) -f ./dockerfiles/Dockerfile.dev . 19 20 # build docker image having the linting tools (dockerfiles/Dockerfile.lint) 21 .PHONY: build_linter_image 22 build_linter_image: 23 docker build ${DOCKER_BUILD_ARGS} -t $(LINTER_IMAGE_NAME) -f ./dockerfiles/Dockerfile.lint . 24 25 .PHONY: build_cross_image 26 build_cross_image: 27 docker build ${DOCKER_BUILD_ARGS} -t $(CROSS_IMAGE_NAME) -f ./dockerfiles/Dockerfile.cross . 28 29 .PHONY: build_shell_validate_image 30 build_shell_validate_image: 31 docker build -t $(VALIDATE_IMAGE_NAME) -f ./dockerfiles/Dockerfile.shellcheck . 32 33 # build executable using a container 34 binary: build_docker_image 35 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make binary 36 37 build: binary 38 39 # clean build artifacts using a container 40 .PHONY: clean 41 clean: build_docker_image 42 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make clean 43 44 # run go test 45 .PHONY: test-unit 46 test-unit: build_docker_image 47 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make test-unit 48 49 .PHONY: test 50 test: test-unit test-e2e 51 52 # build the CLI for multiple architectures using a container 53 .PHONY: cross 54 cross: build_cross_image 55 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make cross 56 57 .PHONY: binary-windows 58 binary-windows: build_cross_image 59 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make $@ 60 61 .PHONY: binary-osx 62 binary-osx: build_cross_image 63 docker run --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make $@ 64 65 .PHONY: watch 66 watch: build_docker_image 67 docker run --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make watch 68 69 # start container in interactive mode for in-container development 70 .PHONY: dev 71 dev: build_docker_image 72 docker run -ti $(ENVVARS) $(MOUNTS) \ 73 -v /var/run/docker.sock:/var/run/docker.sock \ 74 $(DEV_DOCKER_IMAGE_NAME) ash 75 76 shell: dev 77 78 # run linters in a container 79 .PHONY: lint 80 lint: build_linter_image 81 docker run -ti $(ENVVARS) $(MOUNTS) $(LINTER_IMAGE_NAME) 82 83 # download dependencies (vendor/) listed in vendor.conf, using a container 84 .PHONY: vendor 85 vendor: build_docker_image vendor.conf 86 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make vendor 87 88 dynbinary: build_cross_image 89 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(CROSS_IMAGE_NAME) make dynbinary 90 91 ## generate man pages from go source and markdown 92 .PHONY: manpages 93 manpages: build_docker_image 94 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make manpages 95 96 ## Generate documentation YAML files consumed by docs repo 97 .PHONY: yamldocs 98 yamldocs: build_docker_image 99 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(DEV_DOCKER_IMAGE_NAME) make yamldocs 100 101 .PHONY: shellcheck 102 shellcheck: build_shell_validate_image 103 docker run -ti --rm $(ENVVARS) $(MOUNTS) $(VALIDATE_IMAGE_NAME) make shellcheck 104 105 .PHONY: test-e2e 106 test-e2e: binary 107 ./scripts/test/e2e/wrapper