-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathMakefile
More file actions
147 lines (125 loc) · 4.5 KB
/
Makefile
File metadata and controls
147 lines (125 loc) · 4.5 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
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
# Makefile for building bpp
# Reference Guide - https://www.gnu.org/software/make/manual/make.html
#
# Internal variables or constants.
# NOTE - These will be executed when any make target is invoked.
#
IS_DOCKER_INSTALLED = $(shell which docker >> /dev/null 2>&1; echo $$?)
# Docker info
DOCKER_REGISTRY ?= docker.io
DOCKER_REPO ?= neelanjan00
DOCKER_IMAGE ?= bpp
DOCKER_TAG ?= main-latest
.PHONY: help
help:
@echo ""
@echo "Usage:-"
@echo "\tmake deps -- sets up dependencies for image build"
@echo "\tmake push -- pushes the machine ifs multi-arch image"
@echo "\tmake build-amd64 -- builds the machine ifs binary & docker amd64 image"
@echo "\tmake push-amd64 -- pushes the machine ifs amd64 image"
@echo ""
.PHONY: all
all: deps gotasks build trivy-check
.PHONY: deps
deps: _build_check_docker godeps
_build_check_docker:
@echo "------------------"
@echo "--> Check the Docker deps"
@echo "------------------"
@if [ $(IS_DOCKER_INSTALLED) -eq 1 ]; \
then echo "" \
&& echo "ERROR:\tdocker is not installed. Please install it before build." \
&& echo "" \
&& exit 1; \
fi;
.PHONY: godeps
godeps:
@echo ""
@echo "INFO: verifying dependencies for bpp build ..."
@go get -u -v golang.org/x/lint/golint
@go get -u -v golang.org/x/tools/cmd/goimports
.PHONY: test
test:
@echo "------------------"
@echo "--> Run Go Test"
@echo "------------------"
@go test ./... -coverprofile=coverage.txt -covermode=atomic -v
.PHONY: gotasks
gotasks: unused-package-check gofmt-check
.PHONY: unused-package-check
unused-package-check:
@echo "------------------"
@echo "--> Check unused packages for the bpp"
@echo "------------------"
@tidy=$$(go mod tidy); \
if [ -n "$${tidy}" ]; then \
echo "go mod tidy checking failed!"; echo "$${tidy}"; echo; \
fi
.PHONY: gofmt-check
gofmt-check:
@echo "------------------"
@echo "--> Check go formatting"
@echo "------------------"
@gfmt=$$(gofmt -s -l . | wc -l); \
if [ "$${gfmt}" -ne 0 ]; then \
echo "The following files were found to be not go formatted:"; \
gofmt -s -l .; \
exit 1; \
fi
.PHONY: docker.buildx
docker.buildx:
@echo "------------------------------"
@echo "--> Setting up Builder "
@echo "------------------------------"
@if ! docker buildx ls | grep -q multibuilder; then\
docker buildx create --name multibuilder;\
docker buildx inspect multibuilder --bootstrap;\
docker buildx use multibuilder;\
fi
.PHONY: build
build: docker.buildx build-multiarch
build-multiarch:
@echo "-------------------------"
@echo "--> Build bpp image"
@echo "-------------------------"
@docker buildx build . --file build/Dockerfile --build-arg BPP_PATH=./bpp --progress plain --no-cache --platform linux/arm64,linux/amd64 --tag $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG)
.PHONY: push
push: docker.buildx push-multiarch
push-multiarch:
@echo "------------------------"
@echo "--> Push bpp image"
@echo "------------------------"
@echo "Pushing $(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG)"
@docker buildx build . --push --file build/Dockerfile --build-arg BPP_PATH=./bpp --progress plain --no-cache --platform linux/arm64,linux/amd64 --tag $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG)
.PHONY: build-amd64
build-amd64:
@echo "-------------------------"
@echo "--> Build bpp amd64 image"
@echo "-------------------------"
@docker build --file build/Dockerfile --build-arg BPP_PATH=./bpp --tag $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG) . --build-arg TARGETARCH=amd64
.PHONY: push-amd64
push-amd64:
@echo "------------------------------"
@echo "--> Pushing bpp amd64 image"
@echo "------------------------------"
@docker push $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG) . --build-arg TARGETARCH=amd64
.PHONY: trivy-check
trivy-check:
@echo "------------------------"
@echo "---> Running Trivy Check"
@echo "------------------------"
@./trivy --exit-code 0 --severity HIGH --no-progress $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG)
@./trivy --exit-code 0 --severity CRITICAL --no-progress $(DOCKER_REGISTRY)/$(DOCKER_REPO)/$(DOCKER_IMAGE):$(DOCKER_TAG)
## Location to install dependencies to
LOCALBIN ?= $(shell pwd)/bin
$(LOCALBIN):
mkdir -p $(LOCALBIN)
SWAG ?= $(LOCALBIN)/swag
.PHONY: swag
swag: $(SWAG) ## Download swag locally if necessary.
$(SWAG): $(LOCALBIN)
GOBIN=$(LOCALBIN) go install github.com/swaggo/swag/cmd/[email protected]
.PHONY: server-api-doc
server-api-doc: swag
$(SWAG) init --parseDependency --parseInternal -g main.go