forked from mozilla/addons-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile-docker
171 lines (142 loc) Β· 6.18 KB
/
Makefile-docker
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
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 \
raven-js/dist/raven.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 thunderbird $(NUM_ADDONS)
python manage.py generate_addons --app android $(NUM_ADDONS)
python manage.py generate_addons --app seamonkey $(NUM_ADDONS)
python manage.py generate_themes $(NUM_THEMES)
# 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_common_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
install_python_test_dependencies: install_python_common_dependencies
pip install --progress-bar=off --no-deps --exists-action=w -r requirements/tests.txt
install_python_dev_dependencies: install_python_common_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
python manage.py createsuperuser --email=uitest@restmail.net --username=uitest --noinput --add-to-supercreate-group --hostname=olympia-frontend.test
ui-tests: setup-ui-tests
# Generate test add-ons and force a reindex to make sure things are updated
python manage.py generate_ui_test_addons
python manage.py reindex --force --noinput --wipe
pip install --progress-bar=off --no-deps -r requirements/uitests.txt
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"
initialize: update_deps initialize_db update_assets populate_data