forked from sky-uk/feed
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (66 loc) · 2.01 KB
/
Makefile
File metadata and controls
79 lines (66 loc) · 2.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
pkgs := $(shell go list ./... | grep -v /vendor/)
files := $(shell find . -path ./vendor -prune -o -name '*.go' -print)
.PHONY: all format test build vet lint copy docker release checkformat check clean
all : format check build
check : vet lint test
travis : checkformat check docker
setup:
@echo "== setup"
go get github.com/golang/lint/golint
go get golang.org/x/tools/cmd/goimports
go get github.com/golang/dep/cmd/dep
dep ensure
format :
@echo "== format"
@goimports -w $(files)
@sync
build :
@echo "== build"
@go install -v ./cmd/...
unformatted = $(shell goimports -l $(files))
checkformat :
@echo "== check formatting"
ifneq "$(unformatted)" ""
@echo "needs formatting: $(unformatted)"
@echo "run make format"
@exit 1
endif
vet : build
@echo "== vet"
@go vet $(pkgs)
lint :
@echo "== lint"
@for pkg in $(pkgs); do \
golint -set_exit_status $$pkg || exit 1; \
done;
test :
@echo "== run tests"
@go test -race $(pkgs)
# Docker build
git_rev := $(shell git rev-parse --short HEAD)
git_tag := $(shell git tag --points-at=$(git_rev))
image_prefix := skycirrus/feed
docker : build
@echo "== build docker images"
cp $(GOPATH)/bin/feed-dns docker/dns
cp $(GOPATH)/bin/feed-ingress docker/ingress
cp nginx/nginx.tmpl docker/ingress
docker build -t $(image_prefix)-ingress:latest docker/ingress/
docker build -t $(image_prefix)-dns:latest docker/dns/
rm -f docker/dns/feed-dns
rm -f docker/ingress/feed-ingress
rm -f docker/ingress/nginx.tmpl
release : docker
@echo "== release docker images"
ifeq ($(strip $(git_tag)),)
@echo "no tag on $(git_rev), skipping release"
else
@echo "releasing $(image)-(dns|ingress):$(git_tag)"
@docker login -u $(DOCKER_USERNAME) -p $(DOCKER_PASSWORD)
docker tag $(image_prefix)-ingress:latest $(image_prefix)-ingress:$(git_tag)
docker tag $(image_prefix)-dns:latest $(image_prefix)-dns:$(git_tag)
docker push $(image_prefix)-ingress:$(git_tag)
docker push $(image_prefix)-ingress:latest
docker push $(image_prefix)-dns:$(git_tag)
docker push $(image_prefix)-dns:latest
endif