Sfoglia il codice sorgente

Split makefiles

* Makefile is for users to use
* builder.Makefile is used by the builder container
Djordje Lukic 5 anni fa
parent
commit
600feb1e00
3 ha cambiato i file con 79 aggiunte e 42 eliminazioni
  1. 12 12
      Dockerfile
  2. 14 30
      Makefile
  3. 53 0
      builder.Makefile

+ 12 - 12
Dockerfile

@@ -19,26 +19,26 @@ RUN go mod download
 ADD . ${PWD}
 
 FROM fs AS make-protos
-RUN make protos
+RUN make -f builder.Makefile protos
 
-FROM make-protos AS make-bins
+FROM make-protos AS make-cli
 RUN --mount=type=cache,target=/root/.cache/go-build \
     GOOS=${TARGET_OS} \
     GOARCH=${TARGET_ARCH} \
-    make bins
+    make -f  builder.Makefile cli
 
-FROM make-protos as make-test
-RUN make test
-
-FROM make-protos AS make-xbins
+FROM make-protos AS make-xcli
 RUN --mount=type=cache,target=/root/.cache/go-build \
-    make xbins
+    make -f builder.Makefile xcli
 
 FROM scratch AS protos
 COPY --from=make-protos /go/src/github.com/docker/api .
 
-FROM scratch AS bins
-COPY --from=make-bins /go/src/github.com/docker/api/bin/* .
+FROM scratch AS cli
+COPY --from=make-cli /go/src/github.com/docker/api/bin/* .
+
+FROM scratch AS xcli
+COPY --from=make-xcli /go/src/github.com/docker/api/bin/* .
 
-FROM scratch AS xbins
-COPY --from=make-xbins /go/src/github.com/docker/api/bin/* .
+FROM make-protos as test
+RUN make -f builder.Makefile test

+ 14 - 30
Makefile

@@ -31,47 +31,31 @@ PROTOS=$(shell find . -name \*.proto)
 
 export DOCKER_BUILDKIT=1
 
-all: dbins
-xall: dxbins
-bins: cli example
-xbins: xcli xexample
+all: cli
 
 protos:
-	@protoc -I. --go_out=plugins=grpc,paths=source_relative:. ${PROTOS}
-	@goimports -w -local github.com/docker/api .
-
-cli: protos
-	GOOS=${GOOS} GOARCH=${GOARCH} go build -v -o bin/docker ./cli
-
-xcli: cli
-	GOOS=linux   GOARCH=amd64 go build -v -o bin/docker-linux-amd64 ./cli
-	GOOS=darwin  GOARCH=amd64 go build -v -o bin/docker-darwin-amd64 ./cli
-	GOOS=windows GOARCH=amd64 go build -v -o bin/docker-windows-amd64.exe ./cli
-
-dprotos:
-	docker build . \
-	--output type=local,dest=. \
+	@docker build . \
 	--target protos
 
-dbins: dprotos
-	docker build . \
+cli:
+	@docker build . \
 	--output type=local,dest=./bin \
 	--build-arg TARGET_OS=${GOOS} \
 	--build-arg TARGET_ARCH=${GOARCH} \
-	--target bins
+	--target cli
 
-dxbins: dbins
-	docker build . \
+xcli:
+	@docker build . \
 	--output type=local,dest=./bin \
-	--target xbins
-
-dtest:
-	docker build . \
-	--target make-test
+	--target xcli
 
 test:
-	gotestsum ./...
+	@docker build . \
+	--target test
+
+cache-clear:
+	@docker builder prune --force --filter type=exec.cachemount --filter=unused-for=24h
 
 FORCE:
 
-.PHONY: all xall protos xcli cli bins dbins dxbins dprotos
+.PHONY: all protos cli xcli

+ 53 - 0
builder.Makefile

@@ -0,0 +1,53 @@
+# Copyright (c) 2020 Docker Inc.
+
+# Permission is hereby granted, free of charge, to any person
+# obtaining a copy of this software and associated documentation
+# files (the "Software"), to deal in the Software without
+# restriction, including without limitation the rights to use, copy,
+# modify, merge, publish, distribute, sublicense, and/or sell copies
+# of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+
+# The above copyright notice and this permission notice shall be
+# included in all copies or substantial portions of the Software.
+
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+# EXPRESS OR IMPLIED,
+# INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+# IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+# HOLDERS BE LIABLE FOR ANY CLAIM,
+# DAMAGES OR OTHER LIABILITY,
+# WHETHER IN AN ACTION OF CONTRACT,
+# TORT OR OTHERWISE,
+# ARISING FROM, OUT OF OR IN CONNECTION WITH
+# THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+GIT_COMMIT=$(shell git rev-parse --short HEAD)
+GOOS ?= $(shell go env GOOS)
+GOARCH ?= $(shell go env GOARCH)
+
+PROTOS=$(shell find . -name \*.proto)
+
+export DOCKER_BUILDKIT=1
+
+all: cli
+
+protos:
+	@protoc -I. --go_out=plugins=grpc,paths=source_relative:. ${PROTOS}
+	@goimports -w -local github.com/docker/api .
+
+cli:
+	GOOS=${GOOS} GOARCH=${GOARCH} go build -v -o bin/docker ./cli
+
+xcli:
+	@GOOS=linux   GOARCH=amd64 go build -v -o bin/docker-linux-amd64 ./cli
+	@GOOS=darwin  GOARCH=amd64 go build -v -o bin/docker-darwin-amd64 ./cli
+	@GOOS=windows GOARCH=amd64 go build -v -o bin/docker-windows-amd64.exe ./cli
+
+test:
+	@gotestsum ./...
+
+FORCE:
+
+.PHONY: all protos cli xcli