-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMakefile
208 lines (173 loc) · 8.16 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
205
206
207
208
check-env-file:
@bash -c " \
if [ ! -f .env ]; then \
cp .env.example.docker .env; \
fi; \
"
base: check-env-file
# Tasks
# SSH (bash) into server container.
# Useful for running Django shell commands.
bash: base
docker-compose -f docker-compose.backend.yml exec deck bash
# SSH (bash) into database container.
# Useful for running commands directly against database.
bashdb: base
docker-compose -f docker-compose.backend.yml exec db bash
# SSH (postgres shell) into database container.
# Useful for running postgres commands.
dbshell: base
docker-compose -f docker-compose.backend.yml exec db psql -U postgres
# Drop the local database.
cleandb: base
docker-compose -f docker-compose.backend.yml exec db psql -h db -U postgres -c "DROP DATABASE IF EXISTS deck"
# Build docker containers. Pass --no-cache to force re-downloading of images.
# See build --help for additional info
fullstack-python-build: base
docker-compose -f docker-compose.frontend.yml -f docker-compose.backend.yml build $(ARGS)
# Start docker containers.
# See up --help for additional info
fullstack-python-start: base
docker-compose -f docker-compose.frontend.yml -f docker-compose.backend.yml up $(ARGS)
# Stop docker containers.
fullstack-python-stop: base
docker-compose -f docker-compose.frontend.yml -f docker-compose.backend.yml stop
# Build docker containers. Pass --no-cache to force re-downloading of images.
# See build --help for additional info
frontend-build: base
docker-compose -f docker-compose.frontend.yml build $(ARGS)
# Start docker containers.
# See up --help for additional info
frontend-start: base
docker-compose -f docker-compose.frontend.yml up $(ARGS)
# Stop docker containers.
frontend-stop: base
docker-compose -f docker-compose.frontend.yml stop
# Opens a shell in the running frontend container. Useful for installing packages.
frontend-bash: base
docker-compose -f docker-compose.frontend.yml exec deck-frontend bash
# Build docker containers. Pass --no-cache to force re-downloading of images.
# See build --help for additional info
python-build: base
docker-compose -f docker-compose.backend.yml build $(ARGS)
# Start docker containers.
# See up --help for additional info
python-start: base
docker-compose -f docker-compose.backend.yml up $(ARGS)
# Stop docker containers.
python-stop: base
docker-compose -f docker-compose.backend.yml stop
# Remove docker containers (if they exist)
# Run this with --rmi all to remove the mysql image too
python-clean: base
docker-compose -f docker-compose.backend.yml down --rmi local
# SSH (bash) into server container.
# Useful for running Django shell commands.
python-shell: base
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py shell
# Install package, e.g. make python-install-venv ARGS='--dev django_extensions'
python-install-venv: base
@echo WARNING - Any packages installed will be lost after the container shuts down. To persist changes, rebuild the docker image.
docker-compose -f docker-compose.backend.yml exec -T deck poetry install $(ARGS)
# Lint server code automatically with black and autoflake
# WARNING: This updates files in-place.
python-lint: base
docker-compose -f docker-compose.backend.yml exec -T deck black /code/server
docker-compose -f docker-compose.backend.yml exec -T deck isort /code/server
docker-compose -f docker-compose.backend.yml exec -T deck autoflake . --in-place --recursive --remove-all-unused-imports --remove-duplicate-keys --remove-unused-variables
@bash -c "\
if ! git diff-index --quiet HEAD --; then\
echo 'Changes made. See git diff';\
exit 1;\
fi;\
"
# Check server code automatically with black and autoflake
# WARNING: This updates files in-place.
python-lint-check: base
docker-compose -f docker-compose.backend.yml exec -T deck black /code/server
docker-compose -f docker-compose.backend.yml exec -T deck isort --check-only /code/server
@bash -c "\
if ! git diff-index --quiet HEAD --; then\
echo 'Changes made. See git diff';\
exit 1;\
fi;\
"
python-flake8-and-manage-py-check: base
docker-compose -f docker-compose.backend.yml exec -T deck flake8 deck/ tests/
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py check
# Security vulnerability checks
# Check packages
python-security-check: base
docker-compose -f docker-compose.backend.yml exec -T deck poetry run safety check
# Check files, except tests. See also server/.bandit config
docker-compose -f docker-compose.backend.yml exec -T deck bandit -r server
# Run database migrations.
python-makemigrations: base
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py makemigrations $(ARGS)
# Migrate database.
python-migrate: base
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py migrate $(ARGS)
# Run database migrations.
python-migrations-and-fixtures: base
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py migrate
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py makemigrations --check
# Run database migrations.
python-schema: base
docker-compose -f docker-compose.backend.yml exec -T deck python manage.py graphql_schema --schema deck.schema.schema --out schema.json
# Run backend tests
python-test: base
echo "Running tests with cache (use --cache-clear otherwise)..."
docker-compose -f docker-compose.backend.yml exec -T deck pytest $(ARGS)
# Build docker containers. Pass --no-cache to force re-downloading of images.
# See build --help for additional info
php-build: base
docker-compose -f docker-compose.php.yml build $(ARGS)
# Start docker containers.
# See up --help for additional info
php-start: base
docker-compose -f docker-compose.php.yml up $(ARGS)
# Stop docker containers.
php-stop: base
docker-compose -f docker-compose.php.yml stop
# Remove docker containers (if they exist)
# Run this with --rmi all to remove the Postgres image too
php-clean: base
docker-compose -f docker-compose.php.yml down --rmi local -v
php-test: base
echo "Running tests on PHP... this might take a while due to test repetition"
docker-compose -f docker-compose.php.yml run \
--rm \
--name deck-test \
deck \
/bin/bash /scripts/test.sh
help:
@echo ''
@echo ' Targets:'
@echo ''
@echo ' bash - SSH (bash) into server container.'
@echo ' bashdb - SSH (bash) into database container.'
@echo ' dbshell - SSH (postgres shell) into database container.'
@echo ' cleandb - Drop the local database.'
@echo ' fullstack-python-build - Build docker containers. Pass --no-cache to force re-downloading of images.'
@echo ' fullstack-python-start - Start docker containers.'
@echo ' fullstack-python-stop - Stop docker containers'
@echo ' frontend-build - Build docker containers. Pass --no-cache to force re-downloading of images.'
@echo ' frontend-start - Start docker containers.'
@echo ' frontend-stop - Stop docker containers.'
@echo ' frontend-bash - Opens a shell in the running frontend container. Useful for installing packages.'
@echo ' python-build - Build docker containers. Pass --no-cache to force re-downloading of images.'
@echo ' python-start - Start docker containers.'
@echo ' python-stop - Stop docker containers.'
@echo ' python-clean - Remove docker containers (if they exist)'
@echo ' python-shell - SSH (bash) into server container.'
@echo ' python-install-venv - Install package, e.g. make python-install-venv ARGS="--dev django_extensions"'
@echo ' python-lint - Lint server code automatically with black and autoflake'
@echo ' python-lint-check - Check server code automatically with black and autoflake'
@echo ' python-security-check - Security vulnerability checks'
@echo ' python-makemigrations - Run database migrations.'
@echo ' python-migrate - Migrate database.'
@echo ' python-test - Run backend tests'
@echo ' php-build - Build docker containers. Pass --no-cache to force re-downloading of images.'
@echo ' php-start - Start docker containers.'
@echo ' php-Stop - Stop docker containers.'
@echo ' php-clean - Remove docker containers (if they exist)'