This repository has been archived by the owner on Jul 31, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 139
/
Makefile
155 lines (128 loc) · 4.15 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
# Include my.env and export it so variables set in there are available
# in the Makefile.
include my.env
export
# Set these in the environment to override them. This is helpful for
# development if you have file ownership problems because the user
# in the container doesn't match the user on your host.
ICHNAEA_UID ?= 10001
ICHNAEA_GID ?= 10001
ICHNAEA_DOCKER_DB_ENGINE ?= mysql_5_7
# Set this in the environment to force --no-cache docker builds.
DOCKER_BUILD_OPTS :=
ifeq (1, ${NOCACHE})
DOCKER_BUILD_OPTS := --no-cache
endif
DC := $(shell which docker-compose)
.PHONY: help
help: default
.PHONY: default
default:
@echo "Usage: make RULE"
@echo ""
@echo "Ichnaea make rules:"
@echo ""
@echo " build - build docker containers"
@echo " setup - drop and recreate service state"
@echo " run - run webapp"
@echo " runcelery - run scheduler and worker"
@echo " runservices - run service containers (database and redis)"
@echo " stop - stop all service containers"
@echo ""
@echo " shell - open a shell in the app container"
@echo " dbshell - open a database shell in the database container"
@echo " clean - remove all build, test, coverage and Python artifacts"
@echo " lint - lint code"
@echo " lintfix - reformat code"
@echo " test - run unit tests"
@echo " testcoverage - run unit tests with coverage report"
@echo " testshell - open a shell in the test environment"
@echo " docs - generate Sphinx HTML documentation, including API docs"
@echo " assets - build all generated static assets"
@echo " clean-assets - remove generated static assets"
@echo " update-vendored - re-download vendor source and test data"
@echo " update-reqs - regenerate Python requirements"
@echo " local-map - generate local map tiles"
@echo ""
@echo " help - see this text"
@echo ""
@echo "See https://ichnaea.readthedocs.io/ for more documentation."
.PHONY: clean
clean:
rm .docker-build* || true
my.env:
@if [ ! -f my.env ]; \
then \
echo "Copying my.env.dist to my.env..."; \
cp docker/config/my.env.dist my.env; \
fi
.docker-build:
make build
.PHONY: build
build: my.env
@if [ ! -f docker/node/npm-shrinkwrap.json ]; \
then \
echo "{}" > docker/node/npm-shrinkwrap.json; \
fi
${DC} build ${DOCKER_BUILD_OPTS} \
--build-arg userid=${ICHNAEA_UID} \
--build-arg groupid=${ICHNAEA_GID} \
node app
${DC} build ${DOCKER_BUILD_OPTS} \
redis db
touch .docker-build
.PHONY: setup
setup: my.env
${DC} run app shell ./docker/run_setup.sh
.PHONY: shell
shell: my.env .docker-build
${DC} run --rm app shell
.PHONY: dbshell
dbshell: my.env .docker-build
${DC} up -d db
${DC} exec db mysql --user root --password=location location
.PHONY: test
test: my.env .docker-build
./bin/test_env.sh
.PHONY: testcoverage
testcoverage: my.env .docker-build
./bin/test_env.sh --cov=ichnaea --cov-branch
.PHONY: testshell
testshell: my.env .docker-build
./bin/test_env.sh --shell
.PHONY: docs
docs: my.env .docker-build
${DC} run --rm --no-deps app shell ./docker/run_build_docs.sh
.PHONY: assets
assets: my.env .docker-build
${DC} run --rm --user ${ICHNAEA_UID} node make -f node.make
.PHONY: clean-assets
clean-assets: my.env .docker-build
${DC} run --rm --user ${ICHNAEA_UID} node make -f node.make clean
.PHONY: lint
lint: my.env .docker-build
${DC} run --rm --no-deps app shell ./docker/run_lint.sh
.PHONY: lintfix
lintfix: my.env .docker-build
${DC} run --rm --no-deps app shell ./docker/run_lint.sh --fix
.PHONY: run
run: my.env .docker-build
${DC} up web
.PHONY: runcelery
runcelery: my.env .docker-build
${DC} up scheduler worker
.PHONY: runservices
runservices: my.env .docker-build
${DC} up -d redis db
.PHONY: stop
stop: my.env
${DC} stop
.PHONY: update-vendored
update-vendored: my.env
${DC} run --rm --no-deps app shell make -f docker.make update_vendored
.PHONY: update-reqs
update-reqs: my.env
${DC} run --rm --no-deps app shell ./docker/run_update_requirements.sh
.PHONY: local-map
local-map: my.env .docker-build
${DC} run --rm app shell ./docker/run_local_map.sh