krakend-ce

Форк
0
/
Makefile 
179 строк · 6.4 Кб
1
.PHONY: all build test
2

3
# This Makefile is a simple example that demonstrates usual steps to build a binary that can be run in the same
4
# architecture that was compiled in. The "ldflags" in the build assure that any needed dependency is included in the
5
# binary and no external dependencies are needed to run the service.
6

7
BIN_NAME :=krakend
8
OS := $(shell uname | tr '[:upper:]' '[:lower:]')
9
MODULE := github.com/krakendio/krakend-ce/v2
10
VERSION := 2.7.1
11
SCHEMA_VERSION := $(shell echo "${VERSION}" | cut -d '.' -f 1,2)
12
GIT_COMMIT := $(shell git rev-parse --short=7 HEAD)
13
PKGNAME := krakend
14
LICENSE := Apache 2.0
15
VENDOR=
16
URL := http://krakend.io
17
RELEASE := 0
18
USER := krakend
19
ARCH := amd64
20
DESC := High performance API gateway. Aggregate, filter, manipulate and add middlewares
21
MAINTAINER := Daniel Ortiz <dortiz@krakend.io>
22
DOCKER_WDIR := /tmp/fpm
23
DOCKER_FPM := devopsfaith/fpm
24
GOLANG_VERSION := 1.22.7
25
GLIBC_VERSION := $(shell sh find_glibc.sh)
26
ALPINE_VERSION := 3.19
27
OS_TAG :=
28
EXTRA_LDFLAGS :=
29

30
FPM_OPTS=-s dir -v $(VERSION) -n $(PKGNAME) \
31
  --license "$(LICENSE)" \
32
  --vendor "$(VENDOR)" \
33
  --maintainer "$(MAINTAINER)" \
34
  --architecture $(ARCH) \
35
  --url "$(URL)" \
36
  --description  "$(DESC)" \
37
	--config-files etc/ \
38
  --verbose
39

40
DEB_OPTS= -t deb --deb-user $(USER) \
41
	--depends ca-certificates \
42
	--depends rsyslog \
43
	--depends logrotate \
44
	--before-remove builder/scripts/prerm.deb \
45
  --after-remove builder/scripts/postrm.deb \
46
	--before-install builder/scripts/preinst.deb
47

48
RPM_OPTS =--rpm-user $(USER) \
49
	--depends rsyslog \
50
	--depends logrotate \
51
	--before-install builder/scripts/preinst.rpm \
52
	--before-remove builder/scripts/prerm.rpm \
53
  --after-remove builder/scripts/postrm.rpm
54

55
all: test
56

57
build:
58
	@echo "Building the binary..."
59
	@go get .
60
	@go build -ldflags="-X ${MODULE}/pkg.Version=${VERSION} -X github.com/luraproject/lura/v2/core.KrakendVersion=${VERSION} \
61
	-X github.com/luraproject/lura/v2/core.GoVersion=${GOLANG_VERSION} \
62
	-X github.com/luraproject/lura/v2/core.GlibcVersion=${GLIBC_VERSION} ${EXTRA_LDFLAGS}" \
63
	-o ${BIN_NAME} ./cmd/krakend-ce
64
	@echo "You can now use ./${BIN_NAME}"
65

66
test: build
67
	go test -v ./tests
68

69
# Build KrakenD using docker (defaults to whatever the golang container uses)
70
build_on_docker: docker-builder-linux
71
	docker run --rm -it -v "${PWD}:/app" -w /app krakend/builder:${VERSION}-linux-generic sh -c "git config --global --add safe.directory /app && make -e build"
72

73
# Build the container using the Dockerfile (alpine)
74
docker:
75
	docker build --no-cache --pull --build-arg GOLANG_VERSION=${GOLANG_VERSION} --build-arg ALPINE_VERSION=${ALPINE_VERSION} -t devopsfaith/krakend:${VERSION} .
76

77
docker-builder:
78
	docker build --no-cache --pull --build-arg GOLANG_VERSION=${GOLANG_VERSION} --build-arg ALPINE_VERSION=${ALPINE_VERSION} -t krakend/builder:${VERSION} -f Dockerfile-builder .
79

80
docker-builder-linux:
81
	docker build --no-cache --pull --build-arg GOLANG_VERSION=${GOLANG_VERSION} -t krakend/builder:${VERSION}-linux-generic -f Dockerfile-builder-linux .
82

83
benchmark:
84
	@mkdir -p bench_res
85
	@touch bench_res/${GIT_COMMIT}.out
86
	@docker run --rm -d --name krakend -v "${PWD}/tests/fixtures:/etc/krakend" -p 8080:8080 devopsfaith/krakend:${VERSION} run -dc /etc/krakend/bench.json
87
	@sleep 2
88
	@docker run --rm -it --link krakend peterevans/vegeta sh -c \
89
		"echo 'GET http://krakend:8080/test' | vegeta attack -rate=0 -duration=30s -max-workers=300 | tee results.bin | vegeta report" > bench_res/${GIT_COMMIT}.out
90
	@docker stop krakend
91
	@cat bench_res/${GIT_COMMIT}.out
92

93
security_scan:
94
	@mkdir -p sec_scan
95
	@touch sec_scan/${GIT_COMMIT}.out
96
	@docker run --rm -d --name krakend -v "${PWD}/tests/fixtures:/etc/krakend" -p 8080:8080 devopsfaith/krakend:${VERSION} run -dc /etc/krakend/bench.json
97
	@docker run --rm -it --link krakend instrumentisto/nmap --script vuln krakend > sec_scan/${GIT_COMMIT}.out
98
	@docker stop krakend
99
	@cat sec_scan/${GIT_COMMIT}.out
100

101
builder/skel/%/etc/init.d/krakend: builder/files/krakend.init
102
	mkdir -p "$(dir $@)"
103
	cp builder/files/krakend.init "$@"
104

105
builder/skel/%/usr/bin/krakend: krakend
106
	mkdir -p "$(dir $@)"
107
	cp krakend "$@"
108

109
builder/skel/%/etc/krakend/krakend.json: krakend.json
110
	mkdir -p "$(dir $@)"
111
	cp krakend.json "$@"
112

113
builder/skel/%/lib/systemd/system/krakend.service: builder/files/krakend.service
114
	mkdir -p "$(dir $@)"
115
	cp builder/files/krakend.service "$@"
116

117
builder/skel/%/usr/lib/systemd/system/krakend.service: builder/files/krakend.service
118
	mkdir -p "$(dir $@)"
119
	cp builder/files/krakend.service "$@"
120

121
builder/skel/%/etc/rsyslog.d/krakend.conf: builder/files/krakend.conf-rsyslog
122
	mkdir -p "$(dir $@)"
123
	cp builder/files/krakend.conf-rsyslog "$@"
124

125
builder/skel/%/etc/logrotate.d/krakend: builder/files/krakend-logrotate
126
	mkdir -p "$(dir $@)"
127
	cp builder/files/krakend-logrotate "$@"
128

129
.PHONY: tgz
130
tgz: builder/skel/tgz/usr/bin/krakend
131
tgz: builder/skel/tgz/etc/krakend/krakend.json
132
tgz: builder/skel/tgz/etc/init.d/krakend
133
	tar zcvf krakend_${VERSION}_${ARCH}${OS_TAG}.tar.gz -C builder/skel/tgz/ .
134

135
.PHONY: deb
136
deb: builder/skel/deb/usr/bin/krakend
137
deb: builder/skel/deb/etc/krakend/krakend.json
138
deb: builder/skel/deb/etc/rsyslog.d/krakend.conf
139
deb: builder/skel/deb/etc/logrotate.d/krakend
140
	docker run --rm -it -v "${PWD}:${DOCKER_WDIR}" -w ${DOCKER_WDIR} ${DOCKER_FPM}:deb -t deb ${DEB_OPTS} \
141
		--iteration ${RELEASE} \
142
		--deb-systemd builder/files/krakend.service \
143
		-C builder/skel/deb \
144
		${FPM_OPTS}
145

146
.PHONY: rpm
147
rpm: builder/skel/rpm/usr/lib/systemd/system/krakend.service
148
rpm: builder/skel/rpm/usr/bin/krakend
149
rpm: builder/skel/rpm/etc/krakend/krakend.json
150
rpm: builder/skel/rpm/etc/rsyslog.d/krakend.conf
151
rpm: builder/skel/rpm/etc/logrotate.d/krakend
152
	docker run --rm -it -v "${PWD}:${DOCKER_WDIR}" -w ${DOCKER_WDIR} ${DOCKER_FPM}:rpm -t rpm ${RPM_OPTS} \
153
		--iteration ${RELEASE} \
154
		-C builder/skel/rpm \
155
		${FPM_OPTS}
156

157
.PHONY: deb-release
158
deb-release: builder/skel/deb-release/usr/bin/krakend
159
deb-release: builder/skel/deb-release/etc/krakend/krakend.json
160
	/usr/local/bin/fpm -t deb ${DEB_OPTS} \
161
		--iteration ${RELEASE} \
162
		--deb-systemd builder/files/krakend.service \
163
		-C builder/skel/deb-release \
164
		${FPM_OPTS}
165

166
.PHONY: rpm-release
167
rpm-release: builder/skel/rpm-release/usr/lib/systemd/system/krakend.service
168
rpm-release: builder/skel/rpm-release/usr/bin/krakend
169
rpm-release: builder/skel/rpm-release/etc/krakend/krakend.json
170
	/usr/local/bin/fpm -t rpm ${RPM_OPTS} \
171
		--iteration ${RELEASE} \
172
		-C builder/skel/rpm-release \
173
		${FPM_OPTS}
174

175
.PHONY: clean
176
clean:
177
	rm -rf builder/skel/*
178
	rm -f krakend
179
	rm -rf vendor/
180

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.