-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathMakefile.local
128 lines (95 loc) · 5.27 KB
/
Makefile.local
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
TEST_DIRS := ./swh/web/
TESTFLAGS += --hypothesis-profile=swh-web-fast
TESTFULL_FLAGS = --hypothesis-profile=swh-web
YARN ?= yarn
SETTINGS_CYPRESS ?= swh.web.settings.cypress
SETTINGS_DEV ?= swh.web.settings.development
SETTINGS_PROD = swh.web.settings.production
define run_django_migrations
django-admin migrate --settings=$(1) -v0
endef
define create_django_users
cat swh/web/tests/create_test_admin.py | django-admin shell --settings=$(1)
cat swh/web/tests/create_test_users.py | django-admin shell --settings=$(1)
endef
define run_django_server
python3 swh/web/manage.py runserver --nostatic --settings=$(1)
endef
yarn-install: package.json
$(YARN) install --frozen-lockfile
build-webpack-dev: yarn-install ## Build frontend assets with webpack
$(YARN) build-dev
build-webpack-test: yarn-install ## | same with coverage activated
$(YARN) build-test
build-webpack-dev-no-verbose: yarn-install ## | same as above without any output
$(YARN) build-dev >/dev/null
build-webpack-prod: yarn-install ## | build assets minified and with mappings for sentry
$(YARN) build
run-migrations-dev: ## Run django db migration (dev: swh.web.settings.development)
$(call run_django_migrations,$(SETTINGS_DEV))
run-migrations-prod: ## | same with prod settings (swh.web.settings.production)
$(call run_django_migrations,$(SETTINGS_PROD))
run-migrations-cypress: ## | same with cypress settings (swh.web.cypress.tests)
rm -f swh-web-test*.sqlite3*
$(call run_django_migrations,$(SETTINGS_CYPRESS))
add-users-cypress: run-migrations-cypress ## Create default django users (cypress settings)
$(call create_django_users,$(SETTINGS_CYPRESS))
add-users-dev: run-migrations-dev ## | same, using dev settings
$(call create_django_users,$(SETTINGS_DEV))
add-users-prod: run-migrations-prod ## | same, using prod settings
$(call create_django_users,$(SETTINGS_PROD))
.PHONY: clear-memcached
clear-memcached: ## Clear locally running memcache (on localhost:1211)
echo "flush_all" | nc -q 2 localhost 11211 2>/dev/null
run-django-webpack-devserver: add-users-dev yarn-install ## Start webpack and django servers using dev settings (frontend and backend parts of the webapp get automatically reloaded when source files are modified)
bash -c "trap 'trap - SIGINT SIGTERM ERR EXIT && \
# ensure all child processes will be killed by PGID when exiting \
ps -o pgid= $$$$ | grep -o [0-9]* | xargs pkill -g' SIGINT SIGTERM ERR EXIT; \
$(YARN) start-dev & sleep 10 && cd swh/web && \
python3 manage.py runserver --nostatic --settings=$(SETTINGS_DEV) || exit 1"
run-django-webpack-dev: build-webpack-dev add-users-dev ## Build assets & start django from src using dev settings
$(call run_django_server,$(SETTINGS_DEV))
run-django-webpack-prod: build-webpack-prod add-users-prod clear-memcached ## | same with prod settings
$(call run_django_server,$(SETTINGS_PROD))
run-django-server-dev: add-users-dev ## Start django from src using dev settings
$(call run_django_server,$(SETTINGS_DEV))
run-django-server-prod: add-users-prod clear-memcached ## | same with prod settings
$(call run_django_server,$(SETTINGS_PROD))
run-gunicorn-server: add-users-prod clear-memcached ## Clear memcache and start django from gunicorn (prod settings)
DJANGO_SETTINGS_MODULE=$(SETTINGS_PROD) \
gunicorn --bind 127.0.0.1:5004 \
--threads 2 \
--workers 2 'django.core.wsgi:get_wsgi_application()'
run-django-webpack-memory-storages: build-webpack-dev add-users-cypress ## Start django from tests settings (using in-memory storages)
$(call run_django_server,$(SETTINGS_CYPRESS))
run-mirror-demo: build-webpack-dev add-users-cypress ## Start django from tests config using a mirror setup
SWH_CONFIG_FILENAME=$$PWD/mirror_demo/config.yml $(call run_django_server,$(SETTINGS_DEV))
test-full: ## Run all python tests
$(TEST) $(TESTFULL_FLAGS) $(TEST_DIRS)
test-frontend-cmd: build-webpack-test add-users-cypress
bash -c "trap 'trap - SIGINT SIGTERM ERR EXIT && \
jobs -p | xargs -r kill' SIGINT SIGTERM ERR EXIT; \
$(call run_django_server,$(SETTINGS_CYPRESS)) & \
sleep 10 && $(YARN) run cypress run --config numTestsKeptInMemory=0 && \
$(YARN) mochawesome && $(YARN) nyc-report"
test-frontend: export CYPRESS_SKIP_SLOW_TESTS=1
test-frontend: test-frontend-cmd ## Run cypress non-slow tests (no GUI)
test-frontend-full: export CYPRESS_SKIP_SLOW_TESTS=0
test-frontend-full: test-frontend-cmd ## | same, including slow tests
test-frontend-ui-cmd: add-users-cypress yarn-install
# ensure all child processes will be killed when hitting Ctrl-C in terminal
# or manually closing the Cypress UI window, killing by PGID seems the only
# reliable way to do it in that case
bash -c "trap 'trap - SIGINT SIGTERM ERR EXIT && \
ps -o pgid= $$$$ | grep -o [0-9]* | xargs pkill -g' SIGINT SIGTERM ERR EXIT; \
$(YARN) start-dev & \
$(call run_django_server,$(SETTINGS_CYPRESS)) & \
sleep 10 && $(YARN) run cypress open"
test-frontend-ui: export CYPRESS_SKIP_SLOW_TESTS=1
test-frontend-ui: test-frontend-ui-cmd ## Run cypress non-slow tests in a browser (GUI)
test-frontend-full-ui: export CYPRESS_SKIP_SLOW_TESTS=0
test-frontend-full-ui: test-frontend-ui-cmd ## | same, including slow tests
.PHONY: help
help:
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sed -e s/Makefile.local:// | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}'
.DEFAULT_GOAL := help