From 23993995ad4c026f371b7a925c985027f6519e7e Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Sun, 20 Aug 2017 04:46:52 +0200 Subject: [PATCH 1/3] 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 From 2405498555c426bea821c176de595cdc95b51bb0 Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Sun, 20 Aug 2017 04:58:01 +0200 Subject: [PATCH 2/3] Fix CI --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index b6304bc..8754f26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,11 +5,11 @@ services: - docker script: #- sudo PATH=$PATH GOPATH=$GOPATH make ci binaries - - make ci binaries + - make ci after_success: - docker login -u $DOCKER_USER -p $DOCKER_PASS - export REPO=gianarb/orbiter - - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ]; then docker build -f Dockerfile.image -t $REPO . && docker push $REPO; else echo "I only push from master branch." ; fi + - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ]; then docker build -f Dockerfile -t $REPO . && docker push $REPO; else echo "I only push from master branch." ; fi env: global: - secure: "MN7hNDnx47U9ZCg78GjEGDH5//lLfVzCKnJyPdT4jpYWM05pDB1rPrNwIPZOVuz4XT/x07Oa5M695Pkt61L+yVVfs+AUN6bYwffKWRU0T1dvXzJneB64JQeIGkqyiAHAmrjlpgzOgfB7EcmH4aEFq1HXYCqrvIgAX75D9l/T3xuRXdIzyVLzD3CZZQSZK5cFT37niofMvHoJgmBg5u8FEd2yR2M2LJGbIpXuB3UOn2yqRZHELVg12zhOwgqE+sQtqzBwirx9GObo5x4Nh7AWHIEN/K4BsxMXwZcWSySb0QxRtPpeyiItdDNr62W2MHpyEy//0sJwC5FFhsBzGfSlLpTV+YPrmaXju81JddQVyaB7l6gR3qnwrEywlLBSU3K71FJTHerq23KQV5p50JKA0oYAkKzDtaj0yJAXpFXZbXQq1cOVQidz7Suhi5ZsobI1bzWb5gELCeqCXr0aweTQXqch7Uom4qhIf6aK961F5dvUubzYcgKqbGRBp2F72rls2+9AvnQwUHnPC574sv88oTj0JrDDZoku4vBqSgNkOOICtekBNnksAZLbWasom/+ksqGyZX8qlbf1LLfhwVLqdFgWXrHggO8r8rh8i9MyON0K04hnTHsPHU8+kmbtzZwbXwnVmrJlWnlpolt5CT5XbaPpPwDxvoYsKx0WoYsmZ20=" From 4e969e93e7cfcc3e2462f76603e2166241082fdc Mon Sep 17 00:00:00 2001 From: Lorenzo Fontana Date: Sun, 20 Aug 2017 05:04:11 +0200 Subject: [PATCH 3/3] Logging to the docker hub is not needed on PRs Signed-off-by: Lorenzo Fontana --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 8754f26..c326acf 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ script: #- sudo PATH=$PATH GOPATH=$GOPATH make ci binaries - make ci after_success: - - docker login -u $DOCKER_USER -p $DOCKER_PASS + - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ]; docker login -u $DOCKER_USER -p $DOCKER_PASS - export REPO=gianarb/orbiter - if [ "$TRAVIS_BRANCH" == "master" ] && [ "$TRAVIS_PULL_REQUEST_BRANCH" == "" ]; then docker build -f Dockerfile -t $REPO . && docker push $REPO; else echo "I only push from master branch." ; fi env: