forked from UKHomeOffice/lev-api
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
79 lines (58 loc) · 2.59 KB
/
Makefile
File metadata and controls
79 lines (58 loc) · 2.59 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
DOCKER_IMAGE ?= lev-api
patch_version != jq -r '.version' 'package.json'
minor_version != echo "$(patch_version)" | awk -F '.' '{print $$1"."$$2}'
test_image = quay.io/ukhomeofficedigital/lev-api-test:$(minor_version)
perf_test_image = quay.io/ukhomeofficedigital/artillery-ci:0.2
mkfile_path := $(abspath $(lastword $(MAKEFILE_LIST)))
current_dir := $(notdir $(patsubst %/,%,$(dir $(mkfile_path))))
compose_project_name = $(current_dir)
compose_network_regexp != echo "$$(echo '$(compose_project_name)' | sed -E 's/([-_])+/[-_]*/g')_default"
probe_network = docker network ls | grep -o '$(compose_network_regexp)'
.PHONY: all clean deps distclean docker docker-clean docker-compose docker-compose-clean docker-compose-deps docker-test docker-test-deps node-deps run test unit-test
all: deps test docker
clean: docker-compose-clean
rm -rf node_modules/
distclean: clean
docker rmi -f '$(DOCKER_IMAGE)' || true
docker-compose down -v --rmi all
deps: docker-test-deps node-deps
docker-compose-deps:
docker-compose pull
docker-test-deps:
docker pull '$(test_image)'
docker pull '$(perf_test_image)'
docker-compose -f docker-compose-test.yml -p '$(compose_project_name)' pull
node-deps: node_modules/
node_modules/: package.json
npm install
docker:
docker build -t '$(DOCKER_IMAGE)' .
docker-clean:
docker rmi -f '$(DOCKER_IMAGE)'
unit-test: node-deps
npm test
docker-compose: docker-compose-deps docker docker-compose.yml
docker-compose build
docker-test: docker-test-deps docker
docker rm -vf 'lev-api-mock' || true
docker run -d --name 'lev-api-mock' --env 'MOCK=true' '$(DOCKER_IMAGE)'
docker run --net 'container:lev-api-mock' --env 'TEST_URL=http://localhost:8080' --env 'WAIT=true' '$(test_image)'
docker stop 'lev-api-mock'
docker-compose -f docker-compose-test.yml -p '$(compose_project_name)' down -v
docker-compose -f docker-compose-test.yml -p '$(compose_project_name)' build
docker-compose -f docker-compose-test.yml -p '$(compose_project_name)' up &> /dev/null &
compose_network=`$(probe_network)`; \
while [ $$? -ne 0 ]; do \
echo ...; \
sleep 5; \
compose_network=`$(probe_network)`; \
done; \
docker run --net "$${compose_network}" --env 'TEST_URL=http://api:8080' --env 'WAIT=true' '$(test_image)' && \
docker run --net "$${compose_network}" --env "TEST_CONFIG=$$(cat ./test/perf/artillery.config.yml)" --env "MEDIAN_LATENCY=100" '$(perf_test_image)'
docker-compose -f docker-compose-test.yml -p '$(compose_project_name)' down -v
docker-compose-clean:
docker-compose stop
docker-compose rm -vf
run: docker-compose-clean docker-compose
docker-compose up
test: unit-test docker-test