forked from ministryofjustice/opg-lpa
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
204 lines (178 loc) · 9.13 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
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
SHELL := '/bin/bash'
SENDGRID := $(shell aws-vault exec moj-lpa-dev -- aws secretsmanager get-secret-value --secret-id development/opg_lpa_front_email_sendgrid_api_key | jq -r .'SecretString')
GOVPAY := $(shell aws-vault exec moj-lpa-dev -- aws secretsmanager get-secret-value --secret-id development/opg_lpa_front_gov_pay_key | jq -r .'SecretString')
ORDNANCESURVEY := $(shell aws-vault exec moj-lpa-dev -- aws secretsmanager get-secret-value --secret-id development/opg_lpa_front_os_places_hub_license_key | jq -r .'SecretString')
ADMIN_USERS := $(shell aws-vault exec moj-lpa-dev -- aws secretsmanager get-secret-value --secret-id development/opg_lpa_common_admin_accounts | jq -r .'SecretString')
.PHONY: all
all:
@${MAKE} dc-up
.PHONY: reset
reset:
@${MAKE} dc-build-clean
@${MAKE} dc-run
.PHONY: dc-run
dc-run:
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY} ; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose run front-composer | xargs -L1 echo front-composer: &
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
sleep 20; docker-compose run admin-composer | xargs -L1 echo admin-composer: &
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
sleep 20; docker-compose run api-composer | xargs -L1 echo api-composer: &
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
sleep 20; docker-compose run pdf-composer | xargs -L1 echo pdf-composer:
.PHONY: dc-up
dc-up:
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose up
.PHONY: dc-build
dc-build:
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build
# remove docker containers, volumes, images left by existing system, remove vendor folders, rebuild everything
# with no-cache
# this leaves things in a state where make dc-run is needed again before starting back up
.PHONY: dc-build-clean
dc-build-clean:
@${MAKE} dc-down
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker system prune -f --volumes; \
docker rmi lpa-pdf-app || true; \
docker rmi lpa-admin-web || true; \
docker rmi lpa-admin-app || true; \
docker rmi lpa-api-web || true; \
docker rmi lpa-api-app || true; \
docker rmi lpa-front-web || true; \
docker rmi lpa-front-app || true; \
docker rmi seeding || true; \
docker rmi opg-lpa_local-config; \
rm -fr ./service-admin/vendor; \
rm -fr ./service-api/vendor; \
rm -fr ./service-front/node_modules/parse-json/vendor; \
rm -fr ./service-front/node_modules/govuk_frontend_toolkit/javascripts/vendor; \
rm -fr ./service-front/public/assets/v2/js/vendor; \
rm -fr ./service-front/vendor; \
rm -fr ./service-pdf/vendor; \
COMPOSE_DOCKER_CLI_BUILD=1 DOCKER_BUILDKIT=1 docker-compose build --no-cache
# only reset the front container - uesful for quick reset when only been working on front component
.PHONY: reset-front
reset-front:
@${MAKE} dc-down
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker system prune -f --volumes; \
docker rmi lpa-front-web || true; \
docker rmi lpa-front-app || true; \
rm -fr ./service-front/node_modules/parse-json/vendor; \
rm -fr ./service-front/node_modules/govuk_frontend_toolkit/javascripts/vendor; \
rm -fr ./service-front/public/assets/v2/js/vendor; \
rm -fr ./service-front/vendor; \
docker-compose build --no-cache front-web
docker-compose build --no-cache front-app
docker-compose run front-composer
# only reset the api container
.PHONY: reset-api
reset-api:
@${MAKE} dc-down
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker system prune -f --volumes; \
docker rmi lpa-api-web || true; \
docker rmi lpa-api-app || true; \
rm -fr ./service-api/vendor; \
docker-compose build --no-cache api-web
docker-compose build --no-cache api-app
docker-compose run api-composer
.PHONY: dc-down
dc-down:
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose down --remove-orphans
.PHONY: dc-front-unit-tests
dc-front-unit-tests:
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose run front-app /app/vendor/bin/phpunit
.PHONY: dc-unit-tests
dc-unit-tests:
@${MAKE} dc-front-unit-tests
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose run admin-app /app/vendor/bin/phpunit
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose run api-app /app/vendor/bin/phpunit
@export OPG_LPA_FRONT_EMAIL_SENDGRID_API_KEY=${SENDGRID}; \
export OPG_LPA_FRONT_GOV_PAY_KEY=${GOVPAY}; \
export OPG_LPA_FRONT_OS_PLACES_HUB_LICENSE_KEY=${ORDNANCESURVEY}; \
export OPG_LPA_COMMON_ADMIN_ACCOUNTS=${ADMIN_USERS}; \
docker-compose run pdf-app /app/vendor/bin/phpunit
.PHONY: functional-local
functional-local:
docker build -f ./tests/Dockerfile -t casperjs:latest .; \
aws-vault exec moj-lpa-dev -- docker run -it -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e "BASE_DOMAIN=localhost:7002" --network="host" --rm casperjs:latest ./start.sh 'tests/'
.PHONY: integration-api-local
integration-api-local:
docker build -f ./service-api/docker/app/Dockerfile -t integration-api-tests .;\
docker run -it --network="host" --rm integration-api-tests sh -c "cd /app/tests/integration && php ../../vendor/bin/phpunit -v"
.PHONY: cypress-local
cypress-local:
docker build -f ./cypress/Dockerfile -t cypress:latest .; \
aws-vault exec moj-lpa-dev -- docker run -it -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e "CYPRESS_baseUrl=https://localhost:7002" -e "CYPRESS_headless=true" --entrypoint ./cypress/start.sh --network="host" --rm cypress:latest
.PHONY: cypress-local-shell
cypress-local-shell:
aws-vault exec moj-lpa-dev -- docker run -it -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e "CYPRESS_baseUrl=https://localhost:7002" --entrypoint bash --network="host" -v `pwd`/cypress:/app/cypress cypress:latest
.PHONY: cypress-gui-local
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S),Darwin)
MYIP := $(shell ipconfig getifaddr en0)
cypress-gui-local:
docker build -f ./cypress/Dockerfile -t cypress:latest .; \
aws-vault exec moj-lpa-dev -- docker run -it -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e "DISPLAY=${MYIP}:0" -e "CYPRESS_VIDEO=true" -e "CYPRESS_baseUrl=https://localhost:7002" -v ${PWD}/cypress:/app/cypress --entrypoint "./cypress/start.sh" --network="host" --rm cypress:latest open --project /app
endif
ifeq ($(UNAME_S),Linux)
cypress-gui-local:
xhost + 127.0.0.1
aws-vault exec moj-lpa-dev -- docker run -it -v ~/.Xauthority:/root/.Xauthority:ro -e AWS_ACCESS_KEY_ID -e AWS_SECRET_ACCESS_KEY -e AWS_SESSION_TOKEN -e DISPLAY -e "CYPRESS_VIDEO=true" -e "CYPRESS_baseUrl=https://localhost:7002" --entrypoint "./cypress/start.sh" --network="host" --rm cypress:latest open --project /app
endif
.PHONY: restitch
restitch:
cypress/stitch.sh
# Start S3 Monitor and call "cypress open";
# this requires a globally-installed cypress
.PHONY: cypress-open
cypress-open:
aws-vault exec moj-lpa-dev -- python3 cypress/S3Monitor.py &
CYPRESS_userNumber=`node cypress/userNumber.js` cypress open --project ./