forked from mozilla/addons-server
-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathMakefile-docker
More file actions
185 lines (153 loc) · 6.68 KB
/
Makefile-docker
File metadata and controls
185 lines (153 loc) · 6.68 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
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
# Determine the python version (2 or 3) so we can load the correct requirements
python_version_major := $(shell python -c 'import sys; print sys.version_info.major')
# FXA username and password for ui-tests
export FXA_EMAIL=uitest-$(shell uuid)@restmail.net
export FXA_PASSWORD=uitester
NUM_ADDONS=10
NUM_THEMES=$(NUM_ADDONS)
NPM_ARGS :=
ifneq ($(NPM_CONFIG_PREFIX),)
NPM_ARGS := --prefix $(NPM_CONFIG_PREFIX)
endif
NODE_MODULES := $(NPM_CONFIG_PREFIX)node_modules/
STATIC_CSS := static/css/node_lib/
STATIC_JS := static/js/node_lib/
STATIC_JQUERY_UI := static/js/node_lib/ui/
NODE_LIBS_CSS := \
@claviska/jquery-minicolors/jquery.minicolors.css \
@claviska/jquery-minicolors/jquery.minicolors.png \
NODE_LIBS_JS := \
less/dist/less.js \
jqmodal/jqModal.js \
jquery/dist/jquery.js \
jquery.browser/dist/jquery.browser.js \
jquery.cookie/jquery.cookie.js \
@claviska/jquery-minicolors/jquery.minicolors.js \
jquery-pjax/jquery.pjax.js \
jszip/dist/jszip.js \
timeago/jquery.timeago.js \
underscore/underscore.js \
NODE_LIBS_JQUERY_UI := \
jquery-ui/ui/version.js \
jquery-ui/ui/data.js \
jquery-ui/ui/disable-selection.js \
jquery-ui/ui/ie.js \
jquery-ui/ui/keycode.js \
jquery-ui/ui/escape-selector.js \
jquery-ui/ui/labels.js \
jquery-ui/ui/jquery-1-7.js \
jquery-ui/ui/plugin.js \
jquery-ui/ui/safe-active-element.js \
jquery-ui/ui/safe-blur.js \
jquery-ui/ui/scroll-parent.js \
jquery-ui/ui/focusable.js \
jquery-ui/ui/tabbable.js \
jquery-ui/ui/unique-id.js \
jquery-ui/ui/position.js \
jquery-ui/ui/widget.js \
jquery-ui/ui/widgets/menu.js \
jquery-ui/ui/widgets/mouse.js \
jquery-ui/ui/widgets/autocomplete.js \
jquery-ui/ui/widgets/datepicker.js \
jquery-ui/ui/widgets/sortable.js
help_redirect:
@$(MAKE) help --no-print-directory
help_submake:
@echo "Commands that are designed be run in the container:"
@echo " initialize to init the dependencies, the database, and assets"
@echo " update to update the dependencies, the database, and assets"
@echo " initialize_db to create a new database"
@echo " populate_data to populate a new database"
@echo " reindex to reindex everything in elasticsearch, for AMO"
@echo " update_deps to update the pythondependencies"
@echo " update_db to run the database migrations"
initialize_db:
rm -rf ./user-media/* ./tmp/*
python manage.py reset_db
python manage.py migrate --noinput --run-syncdb
python manage.py loaddata initial.json
python manage.py import_prod_versions
schematic --fake src/olympia/migrations/
python manage.py createsuperuser
python manage.py loaddata zadmin/users
python manage.py update_permissions_from_mc
populate_data:
# reindex --wipe will force the ES mapping to be re-installed. Useful to
# make sure the mapping is correct before adding a bunch of add-ons.
python manage.py reindex --wipe --force --noinput
python manage.py generate_addons --app firefox $(NUM_ADDONS)
python manage.py generate_addons --app android $(NUM_ADDONS)
python manage.py generate_addons --app thunderbird $(NUM_ADDONS)
python manage.py generate_themes --app firefox $(NUM_THEMES)
python manage.py generate_themes --app thunderbird $(NUM_THEMES)
# These add-ons are specifically useful for the addons-frontend
# homepage. You may have to re-run this, in case the data there
# changes.
# Stubbed out, uses pyfxa which is not pulled in.
#python manage.py generate_default_addons_for_frontend
# Now that addons have been generated, reindex.
python manage.py reindex --force --noinput
# Also update category counts (denormalized field)
python manage.py cron category_totals
python manage.py update_permissions_from_mc
cleanup_python_build_dir:
# Work arounds "Multiple .dist-info directories" issue.
rm -rf /deps/build/*
install_python_test_dependencies:
# Can't use --progress-bar=off for system packages as long as our docker image
# doesn't have pip 10 by default.
pip install --no-deps --exists-action=w -r requirements/system.txt
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/prod_py${python_version_major}.txt
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/tests.txt
install_python_dev_dependencies: install_python_test_dependencies
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/flake8.txt
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/dev.txt
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/docs.txt
pip install -e .
install_node_dependencies: install_node_js copy_node_js
install_node_js:
npm install $(NPM_ARGS)
copy_node_js:
for dest in $(NODE_LIBS_CSS) ; do cp $(NODE_MODULES)$$dest $(STATIC_CSS) ; done
for dest in $(NODE_LIBS_JS) ; do cp $(NODE_MODULES)$$dest $(STATIC_JS) ; done
for dest in $(NODE_LIBS_JQUERY_UI) ; do cp $(NODE_MODULES)$$dest $(STATIC_JQUERY_UI) ; done
update_deps: cleanup_python_build_dir install_python_dev_dependencies install_node_dependencies
# Make sure we pull our latest mozilla-product-data.
# There were scenarios where this wouldn't happen automatically during our CircleCI ui-tests so we enforce it here as a workaround.
python manage.py update_product_details
update_db:
schematic src/olympia/migrations
update_assets:
python manage.py compress_assets
python manage.py collectstatic --noinput
update: update_deps update_db update_assets
python manage.py update_permissions_from_mc
reindex:
python manage.py reindex $(ARGS)
setup-ui-tests:
rm -rf ./user-media/* ./tmp/*
# Reset the database and fake database migrations
python manage.py reset_db --noinput
python manage.py migrate --noinput --run-syncdb
schematic --fake src/olympia/migrations/
# Let's load some initial data and import mozilla-product versions
python manage.py loaddata initial.json
python manage.py loaddata zadmin/users
python manage.py loaddata src/olympia/access/fixtures/initial.json
python manage.py import_prod_versions
python manage.py update_permissions_from_mc
# Create a proper superuser that can be used to access the API
python manage.py waffle_switch super-create-accounts on --create
python manage.py waffle_switch activate-autograph-signing on --create
run-ui-tests: setup-ui-tests
# Generate test add-ons and force a reindex to make sure things are updated
pip install --progress-bar=off --no-deps -r requirements/uitests.txt
python manage.py generate_default_addons_for_frontend
python manage.py reindex --force --noinput --wipe
pytest --driver Firefox tests/ui/
perf-tests: setup-ui-tests
pip install --progress-bar=off --no-deps -r requirements/perftests.txt
locust --no-web -c 1 -f tests/performance/locustfile.py --host "http://olympia.test"
finished:
@echo "Done!"
initialize: update_deps initialize_db update_assets populate_data finished