Merge pull request #37 from fntlnz/36-build-improvements

Build improvement closes #36
This commit is contained in:
Gianluca Arbezzano 2017-08-20 09:26:47 +00:00 committed by GitHub
commit adbd52a28e
7 changed files with 47 additions and 40 deletions

1
.gitignore vendored
View File

@ -1,2 +1 @@
bin/ bin/
.idea/

View File

@ -5,11 +5,11 @@ services:
- docker - docker
script: script:
#- sudo PATH=$PATH GOPATH=$GOPATH make ci binaries #- sudo PATH=$PATH GOPATH=$GOPATH make ci binaries
- make ci binaries - make ci
after_success: 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 - 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: env:
global: global:
- secure: "MN7hNDnx47U9ZCg78GjEGDH5//lLfVzCKnJyPdT4jpYWM05pDB1rPrNwIPZOVuz4XT/x07Oa5M695Pkt61L+yVVfs+AUN6bYwffKWRU0T1dvXzJneB64JQeIGkqyiAHAmrjlpgzOgfB7EcmH4aEFq1HXYCqrvIgAX75D9l/T3xuRXdIzyVLzD3CZZQSZK5cFT37niofMvHoJgmBg5u8FEd2yR2M2LJGbIpXuB3UOn2yqRZHELVg12zhOwgqE+sQtqzBwirx9GObo5x4Nh7AWHIEN/K4BsxMXwZcWSySb0QxRtPpeyiItdDNr62W2MHpyEy//0sJwC5FFhsBzGfSlLpTV+YPrmaXju81JddQVyaB7l6gR3qnwrEywlLBSU3K71FJTHerq23KQV5p50JKA0oYAkKzDtaj0yJAXpFXZbXQq1cOVQidz7Suhi5ZsobI1bzWb5gELCeqCXr0aweTQXqch7Uom4qhIf6aK961F5dvUubzYcgKqbGRBp2F72rls2+9AvnQwUHnPC574sv88oTj0JrDDZoku4vBqSgNkOOICtekBNnksAZLbWasom/+ksqGyZX8qlbf1LLfhwVLqdFgWXrHggO8r8rh8i9MyON0K04hnTHsPHU8+kmbtzZwbXwnVmrJlWnlpolt5CT5XbaPpPwDxvoYsKx0WoYsmZ20=" - secure: "MN7hNDnx47U9ZCg78GjEGDH5//lLfVzCKnJyPdT4jpYWM05pDB1rPrNwIPZOVuz4XT/x07Oa5M695Pkt61L+yVVfs+AUN6bYwffKWRU0T1dvXzJneB64JQeIGkqyiAHAmrjlpgzOgfB7EcmH4aEFq1HXYCqrvIgAX75D9l/T3xuRXdIzyVLzD3CZZQSZK5cFT37niofMvHoJgmBg5u8FEd2yR2M2LJGbIpXuB3UOn2yqRZHELVg12zhOwgqE+sQtqzBwirx9GObo5x4Nh7AWHIEN/K4BsxMXwZcWSySb0QxRtPpeyiItdDNr62W2MHpyEy//0sJwC5FFhsBzGfSlLpTV+YPrmaXju81JddQVyaB7l6gR3qnwrEywlLBSU3K71FJTHerq23KQV5p50JKA0oYAkKzDtaj0yJAXpFXZbXQq1cOVQidz7Suhi5ZsobI1bzWb5gELCeqCXr0aweTQXqch7Uom4qhIf6aK961F5dvUubzYcgKqbGRBp2F72rls2+9AvnQwUHnPC574sv88oTj0JrDDZoku4vBqSgNkOOICtekBNnksAZLbWasom/+ksqGyZX8qlbf1LLfhwVLqdFgWXrHggO8r8rh8i9MyON0K04hnTHsPHU8+kmbtzZwbXwnVmrJlWnlpolt5CT5XbaPpPwDxvoYsKx0WoYsmZ20="

14
Dockerfile Normal file
View File

@ -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"]

View File

@ -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"]

View File

@ -1,7 +0,0 @@
FROM scratch
ADD ./bin/orbiter /bin/orbiter
ENTRYPOINT ["orbiter"]
CMD ["orbiter", "daemon"]

View File

@ -1,4 +1,4 @@
Apache License Apache License
Version 2.0, January 2004 Version 2.0, January 2004
http://www.apache.org/licenses/ http://www.apache.org/licenses/

View File

@ -1,23 +1,35 @@
out_binary=bin/orbiter
docker_image_fqdn=docker.io/gianarb/orbiter
PACKAGES=$(shell go list ./... | grep -v /vendor/) 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 test: ## run tests, except integration tests
@go test ${RACE} ${PACKAGES} 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 .
vet: ## run go vet 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 .PHONY: clean
@awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) | sort clean:
rm -Rf bin/
ci: vet test