From 23993995ad4c026f371b7a925c985027f6519e7e Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Sun, 20 Aug 2017 04:46:52 +0200 Subject: [PATCH] Build improvement closes #36 - Some cleaning on the Makefile, also specify PHONYs - Static builds - Use multi staged builds for the Docker image - Remove .idea from the gitignore, it's not related to the project but on how the user interacts with it. If one uses idea he can just create a global gitignore to ignore that - License had a disalignement Signed-off-by: Lorenzo Fontana --- .gitignore | 1 - Dockerfile | 14 ++++++++++++++ Dockerfile.build | 11 ----------- Dockerfile.image | 7 ------- LICENSE | 2 +- Makefile | 46 +++++++++++++++++++++++++++++----------------- 6 files changed, 44 insertions(+), 37 deletions(-) create mode 100644 Dockerfile delete mode 100644 Dockerfile.build delete mode 100644 Dockerfile.image diff --git a/.gitignore b/.gitignore index 6df9c8e..e660fd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ bin/ -.idea/ diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7fe065f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:1.8.3 as builder + +RUN mkdir -p /go/src/github.com/gianarb/orbiter +ADD . /go/src/github.com/gianarb/orbiter/ +WORKDIR /go/src/github.com/gianarb/orbiter +RUN make build + +FROM scratch + +COPY --from=builder /go/src/github.com/gianarb/orbiter/bin/orbiter /bin/orbiter + +ENTRYPOINT ["orbiter"] + +CMD ["orbiter", "daemon"] \ No newline at end of file diff --git a/Dockerfile.build b/Dockerfile.build deleted file mode 100644 index b38bd3e..0000000 --- a/Dockerfile.build +++ /dev/null @@ -1,11 +0,0 @@ -FROM golang:1.8.3 - -RUN mkdir -p /go/src/github.com/gianarb/orbiter -ADD . /go/src/github.com/gianarb/orbiter/ -WORKDIR /go/src/github.com/gianarb/orbiter -RUN go build -o orbiter -RUN mv ./orbiter /bin/orbiter - - -ENTRYPOINT ["orbiter"] -CMD ["orbiter", "daemon"] diff --git a/Dockerfile.image b/Dockerfile.image deleted file mode 100644 index b8cc42b..0000000 --- a/Dockerfile.image +++ /dev/null @@ -1,7 +0,0 @@ -FROM scratch - -ADD ./bin/orbiter /bin/orbiter - -ENTRYPOINT ["orbiter"] - -CMD ["orbiter", "daemon"] diff --git a/LICENSE b/LICENSE index 5c304d1..980a15a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,4 +1,4 @@ -Apache License + Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ diff --git a/Makefile b/Makefile index 2185808..c5e7b78 100644 --- a/Makefile +++ b/Makefile @@ -1,23 +1,35 @@ +out_binary=bin/orbiter +docker_image_fqdn=docker.io/gianarb/orbiter PACKAGES=$(shell go list ./... | grep -v /vendor/) -RACE := $(shell test $$(go env GOARCH) != "amd64" || (echo "-race")) +RACE=$(shell test $$(go env GOARCH) != "amd64" || (echo "-race")) + +.PHONY: build +build: clean $(out_binary) + +$(out_binary): bin + mkdir -p ./bin + CGO_ENABLED=0 GOOS=linux go build -o $(out_binary) -a -tags netgo -ldflags '-w' . + +bin: + mkdir -p bin/ + +.PHONY: build/docker-image +docker-image: + docker build -t $(docker_image_fqdn):latest . + +.PHONY: clean +help: ## this help + awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort + +.PHONY: ci test vet +ci: vet test test: ## run tests, except integration tests - @go test ${RACE} ${PACKAGES} - -binaries: - @echo "Compiling..." - @mkdir -p ./bin - @go build -i -o ./bin/orbiter - @CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -i -o ./bin/orbiter - @echo "All done! The binaries is in ./bin let's have fun!" - -build/docker: binaries - @docker build -t gianarb/orbiter:latest . + go test ${RACE} ${PACKAGES} vet: ## run go vet - @test -z "$$(go vet ${PACKAGES} 2>&1 | grep -v '*composite literal uses unkeyed fields|exit status 0)' | tee /dev/stderr)" + test -z "$$(go vet ${PACKAGES} 2>&1 | grep -v '*composite literal uses unkeyed fields|exit status 0)' | tee /dev/stderr)" -help: ## this help - @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort - -ci: vet test +.PHONY: clean +clean: + rm -Rf bin/ \ No newline at end of file