-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
93 lines (73 loc) · 2.31 KB
/
Copy pathMakefile
File metadata and controls
93 lines (73 loc) · 2.31 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
80
81
82
83
84
85
86
87
88
89
90
91
92
93
PWD := $(shell pwd)
APP := diego
PKG := github.com/ckeyer/$(APP)
GO := go
HASH := $(shell which shasum || which sha1sum)
OS := $(shell go env GOOS)
ARCH := $(shell go env GOARCH)
VERSION := $(shell cat VERSION.txt)
GIT_COMMIT := $(shell git rev-parse --short HEAD)
GIT_BRANCH := $(shell git rev-parse --abbrev-ref HEAD)
BUILD_AT := $(shell date "+%Y-%m-%dT%H:%M:%SZ%z")
PACKAGE_NAME := $(APP)$(VERSION).$(OS)-$(ARCH)
COMMONS_PKG := github.com/ckeyer/diego
LD_FLAGS := -X ${COMMONS_PKG}/version.version=$(VERSION) \
-X ${COMMONS_PKG}/version.gitCommit=$(GIT_COMMIT) \
-X ${COMMONS_PKG}/version.buildAt=$(BUILD_AT)
IMAGE := ckeyer/${APP}
GO_IMAGE := ckeyer/dev:go
UI_IMAGE := ckeyer/dev:vue
gorun:
$(GO) run -ldflags="$(LD_FLAGS)" main.go
build: build-ui local
local: generate-ui generate-docs
$(GO) build -v -ldflags="$(LD_FLAGS)" -o bundles/$(APP) main.go
$(HASH) bundles/$(APP)
build-ui:
make -C ui build-ui
build-ui-in-docker:
make -C ui build-in-docker
test: build-ui-in-docker generate-ui
$(GO) test -cover -covermode=count $$(go list ./... |grep -v "vendor")
image:
docker build -t ${IMAGE}:${VERSION} .
push-image: image
docker push ${IMAGE}:${VERSION}
@echo "push image ${IMAGE}:${VERSION} successful."
test-in-docker:
docker run --rm \
-v ${PWD}:/go/src/${PKG} \
-w /go/src/${PKG} \
${GO_IMAGE} \
go test -ldflags="$(LD_FLAGS)" $$(go list ./... |grep -v "vendor")
generate-ui:
which go-bindata || go get github.com/jteeuwen/go-bindata/go-bindata
go-bindata -nomemcopy -prefix='ui/dist' -o api/view/assets.go -pkg=view ./ui/dist/...
generate-docs:
-which swag || go get github.com/swaggo/swag/cmd/swag
-swag i -g cmd/docs.go --output docs/swaggo
release: clean local
mkdir -p bundles/$(PACKAGE_NAME)
echo $(VERSION) > bundles/$(PACKAGE_NAME)/release.txt
cd bundles && $(HASH) $(APP) > $(PACKAGE_NAME)/sha1.txt
mv bundles/$(APP) bundles/$(PACKAGE_NAME)
cd bundles && tar zcvf $(PACKAGE_NAME).tgz $(PACKAGE_NAME)
clean:
rm -f api/view/assets.go
rm -rf bundles/*
only-image:
docker build -t ${IMAGE}:${GIT_COMMIT} .
dev:
docker run --rm -it \
--name $(APP)-dev \
-p 8080:8080 \
-v $(PWD)/..:/opt/gopath/src/$(PKG)/.. \
-w /opt/gopath/src/$(PKG) \
$(GO_IMAGE) sh
dev-ui:
docker run --rm -it \
--name $(APP)-dev \
-p 8080:8080 \
-v $(PWD)/ui:/opt/diego \
-w /opt/diego \
$(UI_IMAGE) bash