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)