mirror of https://github.com/docker/compose.git
Cleanup Makefiles
* add `make help` target * remove unused variables * add .exe to the binary name when on windows * add ldflags to go build to strip the binary (smaller binary size) * `make protos` must be executed manually when proto files change
This commit is contained in:
parent
900d82ced0
commit
ba8c824436
|
@ -21,13 +21,13 @@ ADD . ${PWD}
|
||||||
FROM fs AS make-protos
|
FROM fs AS make-protos
|
||||||
RUN make -f builder.Makefile protos
|
RUN make -f builder.Makefile protos
|
||||||
|
|
||||||
FROM make-protos AS make-cli
|
FROM fs AS make-cli
|
||||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||||
GOOS=${TARGET_OS} \
|
GOOS=${TARGET_OS} \
|
||||||
GOARCH=${TARGET_ARCH} \
|
GOARCH=${TARGET_ARCH} \
|
||||||
make -f builder.Makefile cli
|
make -f builder.Makefile cli
|
||||||
|
|
||||||
FROM make-protos AS make-cross
|
FROM fs AS make-cross
|
||||||
RUN --mount=type=cache,target=/root/.cache/go-build \
|
RUN --mount=type=cache,target=/root/.cache/go-build \
|
||||||
make -f builder.Makefile cross
|
make -f builder.Makefile cross
|
||||||
|
|
||||||
|
|
19
Makefile
19
Makefile
|
@ -23,39 +23,38 @@
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH
|
||||||
# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
GIT_COMMIT=$(shell git rev-parse --short HEAD)
|
|
||||||
GOOS ?= $(shell go env GOOS)
|
GOOS ?= $(shell go env GOOS)
|
||||||
GOARCH ?= $(shell go env GOARCH)
|
GOARCH ?= $(shell go env GOARCH)
|
||||||
|
|
||||||
PROTOS=$(shell find . -name \*.proto)
|
|
||||||
|
|
||||||
export DOCKER_BUILDKIT=1
|
export DOCKER_BUILDKIT=1
|
||||||
|
|
||||||
all: cli
|
all: cli
|
||||||
|
|
||||||
protos:
|
protos: ## Generate go code from .proto files
|
||||||
@docker build . \
|
@docker build . \
|
||||||
--target protos
|
--target protos
|
||||||
|
|
||||||
cli:
|
cli: ## Compile the cli
|
||||||
@docker build . \
|
@docker build . \
|
||||||
--output type=local,dest=./bin \
|
--output type=local,dest=./bin \
|
||||||
--build-arg TARGET_OS=${GOOS} \
|
--build-arg TARGET_OS=${GOOS} \
|
||||||
--build-arg TARGET_ARCH=${GOARCH} \
|
--build-arg TARGET_ARCH=${GOARCH} \
|
||||||
--target cli
|
--target cli
|
||||||
|
|
||||||
cross:
|
cross: ## Compile the CLI for linux, darwin and windows
|
||||||
@docker build . \
|
@docker build . \
|
||||||
--output type=local,dest=./bin \
|
--output type=local,dest=./bin \
|
||||||
--target cross
|
--target cross
|
||||||
|
|
||||||
test:
|
test: ## Run unit tests
|
||||||
@docker build . \
|
@docker build . \
|
||||||
--target test
|
--target test
|
||||||
|
|
||||||
cache-clear:
|
cache-clear: # Clear the builder cache
|
||||||
@docker builder prune --force --filter type=exec.cachemount --filter=unused-for=24h
|
@docker builder prune --force --filter type=exec.cachemount --filter=unused-for=24h
|
||||||
|
|
||||||
FORCE:
|
help: ## Show help
|
||||||
|
@echo Please specify a build target. The choices are:
|
||||||
|
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
|
||||||
|
|
||||||
.PHONY: all protos cli cross
|
.PHONY: all protos cli cross test cache-clear help
|
||||||
|
|
|
@ -4,10 +4,12 @@
|
||||||
|
|
||||||
## Dev Setup
|
## Dev Setup
|
||||||
|
|
||||||
To setup a development machine to update the API protobufs, first run the `./setup-dev.sh` script to install the correct version of protobufs on your system and get the protobuild binary.
|
Make sure you have Docker installed and running.
|
||||||
|
|
||||||
## Building the API Project
|
## Building the project
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
> make
|
$ make
|
||||||
```
|
```
|
||||||
|
|
||||||
|
If you make changes to the `.proto` files, make sure to `make protos` to generate go code.
|
||||||
|
|
|
@ -23,13 +23,22 @@
|
||||||
# ARISING FROM, OUT OF OR IN CONNECTION WITH
|
# ARISING FROM, OUT OF OR IN CONNECTION WITH
|
||||||
# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
|
||||||
GIT_COMMIT=$(shell git rev-parse --short HEAD)
|
|
||||||
GOOS ?= $(shell go env GOOS)
|
GOOS ?= $(shell go env GOOS)
|
||||||
GOARCH ?= $(shell go env GOARCH)
|
GOARCH ?= $(shell go env GOARCH)
|
||||||
|
|
||||||
PROTOS=$(shell find . -name \*.proto)
|
PROTOS=$(shell find . -name \*.proto)
|
||||||
|
|
||||||
export DOCKER_BUILDKIT=1
|
EXTENSION :=
|
||||||
|
ifeq ($(GOOS),windows)
|
||||||
|
EXTENSION := .exe
|
||||||
|
endif
|
||||||
|
|
||||||
|
STATIC_FLAGS= CGO_ENABLED=0
|
||||||
|
LDFLAGS := "-s -w"
|
||||||
|
GO_BUILD = $(STATIC_FLAGS) go build -trimpath -ldflags=$(LDFLAGS)
|
||||||
|
|
||||||
|
BINARY=bin/docker
|
||||||
|
BINARY_WITH_EXTENSION=$(BINARY)$(EXTENSION)
|
||||||
|
|
||||||
all: cli
|
all: cli
|
||||||
|
|
||||||
|
@ -38,16 +47,16 @@ protos:
|
||||||
@goimports -w -local github.com/docker/api .
|
@goimports -w -local github.com/docker/api .
|
||||||
|
|
||||||
cli:
|
cli:
|
||||||
GOOS=${GOOS} GOARCH=${GOARCH} go build -v -o bin/docker ./cli
|
GOOS=${GOOS} GOARCH=${GOARCH} $(GO_BUILD) -o $(BINARY_WITH_EXTENSION) ./cli
|
||||||
|
|
||||||
cross:
|
cross:
|
||||||
@GOOS=linux GOARCH=amd64 go build -v -o bin/docker-linux-amd64 ./cli
|
@GOOS=linux GOARCH=amd64 $(GO_BUILD) -o $(BINARY)-linux-amd64 ./cli
|
||||||
@GOOS=darwin GOARCH=amd64 go build -v -o bin/docker-darwin-amd64 ./cli
|
@GOOS=darwin GOARCH=amd64 $(GO_BUILD) -o $(BINARY)-darwin-amd64 ./cli
|
||||||
@GOOS=windows GOARCH=amd64 go build -v -o bin/docker-windows-amd64.exe ./cli
|
@GOOS=windows GOARCH=amd64 $(GO_BUILD) -o $(BINARY)-windows-amd64.exe ./cli
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@gotestsum ./...
|
@gotestsum ./...
|
||||||
|
|
||||||
FORCE:
|
FORCE:
|
||||||
|
|
||||||
.PHONY: all protos cli cross
|
.PHONY: all protos cli cross test
|
||||||
|
|
Loading…
Reference in New Issue