forked from LAB-MI/candilibV2
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.mk
131 lines (109 loc) · 5.16 KB
/
Makefile.mk
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
SHELL := /bin/bash
APP := candilibV2
# get version (from git or static VERSION file)
APP_VERSION := $(shell bash ./ci/version.sh 2>&- || cat VERSION)
LATEST_VERSION := latest
APP_PATH := $(shell pwd)
APP_FRONT_PATH := $(APP_PATH)/client
APP_API_PATH := $(APP_PATH)/server
APP_DB_PATH := $(APP_PATH)/server
BUILD_DIR := ${APP_PATH}/${APP}-${APP_VERSION}-build
ARCHIVE_DIR := ${APP_PATH}/${APP}-${APP_VERSION}
DIST_DIR := ${APP_PATH}/${APP}-${APP_VERSION}-dist
# binaries
DOCKER := $(shell type -p docker)
DC := $(shell type -p docker-compose)
http_proxy := $(shell echo $$http_proxy)
https_proxy := $(shell echo $$https_proxy)
no_proxy := $(shell echo $$no_proxy)
# detect tty
DOCKER_USE_TTY := $(shell test -t 1 && echo "-t" )
DC_USE_TTY := $(shell test -t 1 || echo "-T" )
# cli docker-compose
DC_BUILD_ARGS := --pull --no-cache --force-rm
DC_RUN_ARGS := -d --no-build
# docker-compose file: development (build or run time)
# (all containers in one compose)
DC_APP_BUILD_DEV := $(APP_API_PATH)/docker-compose.dev.yml
DC_APP_RUN_DEV := $(APP_API_PATH)/docker-compose.dev.yml
# (one container in one compose)
DC_APP_FRONT_CANDIDAT_BUILD_DEV := $(APP_FRONT_PATH)/docker-compose.dev.yml
DC_APP_FRONT_ADMIN_BUILD_DEV := $(APP_FRONT_PATH)/docker-compose.dev.yml
DC_APP_API_BUILD_DEV := $(APP_API_PATH)/docker-compose.dev.yml
DC_APP_API_RUN_DEV := $(APP_API_PATH)/docker-compose.dev.yml
DC_APP_DB_BUILD_DEV := $(APP_DB_PATH)/docker-compose.dev.db.yml
DC_APP_DB_RUN_DEV := $(APP_DB_PATH)/docker-compose.dev.db.yml
# docker-compose file: production (build or run time)
# (all containers in one compose)
DC_APP_BUILD_PROD := $(APP_API_PATH)/docker-compose.prod.all.yml
DC_APP_RUN_PROD := $(APP_API_PATH)/docker-compose.prod.all.yml
# (one container in one compose)
DC_APP_FRONT_CANDIDAT_BUILD_PROD := $(APP_FRONT_PATH)/docker-compose.prod.front.yml
DC_APP_FRONT_CANDIDAT_RUN_PROD := $(APP_FRONT_PATH)/docker-compose.prod.front.yml
DC_APP_FRONT_ADMIN_BUILD_PROD := $(APP_FRONT_PATH)/docker-compose.prod.front.yml
DC_APP_FRONT_ADMIN_RUN_PROD := $(APP_FRONT_PATH)/docker-compose.prod.front.yml
DC_APP_API_BUILD_PROD := $(APP_API_PATH)/docker-compose.prod.api.yml
DC_APP_API_RUN_PROD := $(APP_API_PATH)/docker-compose.prod.api.yml
DC_APP_DB_BUILD_PROD := $(APP_DB_PATH)/docker-compose.prod.db.yml
DC_APP_DB_RUN_PROD := $(APP_DB_PATH)/docker-compose.prod.db.yml
# tests e2e
DC_APP_E2E_BUILD_PROD := $(APP_FRONT_PATH)/docker-compose.e2e.yml
DC_APP_E2E_RUN_PROD := $(APP_FRONT_PATH)/docker-compose.e2e.yml
# source archive
FILE_ARCHIVE_APP_VERSION = $(APP)-$(APP_VERSION)-archive.tar.gz
FILE_ARCHIVE_LATEST_VERSION = $(APP)-$(LATEST_VERSION)-archive.tar.gz
FILE_FRONT_CANDIDAT_APP_VERSION = $(APP)-front-candidat-$(APP_VERSION)-archive.tar.gz
FILE_FRONT_ADMIN_APP_VERSION = $(APP)-front-admin-$(APP_VERSION)-archive.tar.gz
# docker image name save
FILE_IMAGE_FRONT_CANDIDAT_APP_VERSION = $(APP)-front-candidat-$(APP_VERSION)-image.tar.gz
FILE_IMAGE_FRONT_CANDIDAT_LATEST_VERSION = $(APP)-front-candidat-$(LATEST_VERSION)-image.tar.gz
FILE_IMAGE_FRONT_ADMIN_APP_VERSION = $(APP)-front-admin-$(APP_VERSION)-image.tar.gz
FILE_IMAGE_FRONT_ADMIN_LATEST_VERSION = $(APP)-front-admin-$(LATEST_VERSION)-image.tar.gz
FILE_IMAGE_API_APP_VERSION = $(APP)-api-$(APP_VERSION)-image.tar.gz
FILE_IMAGE_API_LATEST_VERSION = $(APP)-api-$(LATEST_VERSION)-image.tar.gz
FILE_IMAGE_DB_APP_VERSION = $(APP)-db-$(APP_VERSION)-image.tar.gz
FILE_IMAGE_DB_LATEST_VERSION = $(APP)-db-$(LATEST_VERSION)-image.tar.gz
# Publish URL (docker image and archive)
PUBLISH_AUTH_TOKEN :=
PUBLISH_URL :=
PUBLISH_URL_BASE := ${APP}-docker-images
PUBLISH_URL_APP_VERSION := $(PUBLISH_URL_BASE)/$(APP_VERSION)
PUBLISH_URL_LATEST_VERSION := $(PUBLISH_URL_BASE)/$(LATEST_VERSION)
curl_opt=--retry 10 --retry-delay 5 --retry-max-time 60 --connect-timeout 10 --fail
curl_progress_bar=--progress-bar --write 'Downloaded %{url_effective} %{size_download} bytes in %{time_connect} seconds (%{speed_download} bytes/s)\n'
# escape dollar
dollar = $(shell echo \$$)
# Build env
# Private npm miror
NPM_REGISTRY := $(shell echo $$NPM_REGISTRY )
SASS_REGISTRY := $(shell echo $$SASS_REGISTRY )
CYPRESS_DOWNLOAD_MIRROR := $(shell echo $$CYPRESS_DOWNLOAD_MIRROR )
NPM_AUDIT_DRY_RUN := $(shell echo $$NPM_AUDIT_DRY_RUN )
# Run env
LINE_DELAY := $(shell [ -n "$$LINE_DELAY" ] && echo $$LINE_DELAY )
# Reverse proxy (nginx)
APP_USER_LIMIT_RATE=30r/s
APP_USER_BURST=80 nodelay
API_USER_SCOPE=http_x_forwarded_for
API_USER_ID_LIMIT_RATE=3r/s
API_USER_ID_BURST=5 delay=2
API_USER_GET_LIMIT_RATE=5r/s
API_USER_GET_BURST=12 delay=8
API_USER_POST_LIMIT_RATE=2r/m
API_USER_POST_BURST=2 delay=8
API_USER_PATCH_LIMIT_RATE=1r/m
API_USER_PATCH_BURST=2 delay=8
API_USER_PUT_LIMIT_RATE=2r/m
API_USER_PUT_BURST=2 delay=8
API_USER_HEAD_LIMIT_RATE=2r/m
API_USER_HEAD_BURST=2 delay=8
API_USER_DELETE_LIMIT_RATE=2r/m
API_USER_DELETE_BURST=2 delay=8
API_USER_OPTIONS_LIMIT_RATE=2r/m
API_USER_OPTIONS_BURST=2 delay=8
API_VERIFYZONE_LIMIT_RATE=6r/s
API_VERIFYZONE_BURST=5 delay=2
# e2e
CYPRESS_ARG := $(shell echo $$CYPRESS_ARG )
# export all variables in subshell
export