-
-
Notifications
You must be signed in to change notification settings - Fork 15
/
Copy pathMakefile
48 lines (41 loc) · 2 KB
/
Makefile
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
SHELL = /bin/bash
SERVICE_NAME = $(notdir $(CURDIR))
LATEST_TAG ?= vnext
BRANCH_TAG ?= $(shell git rev-parse --abbrev-ref HEAD | sed 's/[^a-zA-Z0-9]/-/g')
ifneq ($(BRANCH_TAG),main)
LATEST_TAG = $(BRANCH_TAG)
endif
VERSION_TAG ?= $(LATEST_TAG)-$(shell git rev-parse --short=7 --verify HEAD)
GOPATH ?= $(shell go env GOPATH)
WORKING_DIRECTORY := $(shell pwd)
REPOSITORY_DIRECTORY := $(shell cd .. && pwd)
BUILD_COMMIT_DATE ?= $(shell date -u +%FT%TZ --date=@`git show --format='%ct' HEAD --quiet`)
BUILD_SHORT_COMMIT ?= $(shell git show --format=%h HEAD --quiet)
BUILD_DATE ?= $(shell date -u +%FT%TZ)
BUILD_VERSION ?= $(shell git tag --sort version:refname | tail -1 | sed -e "s/^v//")
default: build
define build-docker-image
cd .. && \
mkdir -p .tmp/docker/$(SERVICE_NAME) && \
awk '{gsub("@NAME@","$(SERVICE_NAME)")} {gsub("@DIRECTORY@","$(SERVICE_NAME)")} {print}' tools/docker/Dockerfile.in > .tmp/docker/$(SERVICE_NAME)/Dockerfile && \
docker build \
--network=host \
--tag ghcr.io/plgd-dev/hub/$(SERVICE_NAME):$(VERSION_TAG) \
--tag ghcr.io/plgd-dev/hub/$(SERVICE_NAME):$(LATEST_TAG) \
--tag ghcr.io/plgd-dev/hub/$(SERVICE_NAME):$(BRANCH_TAG) \
--target $(1) \
-f .tmp/docker/$(SERVICE_NAME)/Dockerfile \
.
endef
build-servicecontainer:
$(call build-docker-image,service)
build: build-servicecontainer
push: build-servicecontainer
docker push plgd/$(SERVICE_NAME):$(VERSION_TAG)
docker push plgd/$(SERVICE_NAME):$(LATEST_TAG)
proto/generate:
protoc -I=. -I=$(REPOSITORY_DIRECTORY) -I=$(GOPATH)/src -I=./pb --go_out=$(GOPATH)/src $(WORKING_DIRECTORY)/pb/devices.proto
protoc -I=. -I=$(REPOSITORY_DIRECTORY) -I=$(GOPATH)/src -I=./pb --go_out=$(GOPATH)/src $(WORKING_DIRECTORY)/pb/events.proto
protoc -I=. -I=$(REPOSITORY_DIRECTORY) -I=$(GOPATH)/src -I=./pb --go_out=$(GOPATH)/src $(WORKING_DIRECTORY)/pb/service.proto
protoc -I=. -I=$(REPOSITORY_DIRECTORY) -I=$(GOPATH)/src -I=./pb --go-grpc_out=$(GOPATH)/src $(WORKING_DIRECTORY)/pb/service.proto
.PHONY: build-servicecontainer build push clean proto/generate