forked from openedx-unsupported/edx-analytics-pipeline
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
108 lines (78 loc) · 4.28 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
.PHONY: requirements test test-requirements .tox upgrade
uninstall:
while pip uninstall -y edx.analytics.tasks; do true; done
python setup.py clean
install: requirements uninstall
python setup.py install --force
bootstrap: uninstall
pip install -U -r requirements/pre.txt
pip install -U -r requirements/base.txt --no-cache-dir
python setup.py install --force
develop: requirements develop-local
develop-local: uninstall
python setup.py develop
python setup.py install_data
docker-build:
docker build -t edxops/analytics-pipeline:latest .
docker-shell:
docker run -v `(pwd)`:/edx/app/analytics-pipeline -it edxops/analytics-pipeline:latest bash
system-requirements:
ifeq (,$(wildcard /usr/bin/yum))
# This is not great, we can't use these libraries on slave nodes using this method.
sudo apt-get install -y -q libmysqlclient-dev libpq-dev python-dev libffi-dev libssl-dev libxml2-dev libxslt1-dev
else
sudo yum install -y -q postgresql-devel libffi-devel
endif
requirements:
pip install -U -r requirements/pre.txt
pip install -U -r requirements/default.txt --no-cache-dir --upgrade-strategy only-if-needed
pip install -U -r requirements/extra.txt --no-cache-dir --upgrade-strategy only-if-needed
test-requirements: requirements
pip install -U -r requirements/test.txt --no-cache-dir --upgrade-strategy only-if-needed
upgrade: ## update the requirements/*.txt files with the latest packages satisfying requirements/*.in
pip-compile --upgrade -o requirements/base.txt requirements/base.in
pip-compile --upgrade -o requirements/default.txt requirements/default.in requirements/base.in
pip-compile --upgrade -o requirements/docs.txt requirements/docs.in requirements/default.in requirements/base.in
pip-compile --upgrade -o requirements/test.txt requirements/test.in requirements/default.in requirements/base.in
echo "-r extra.txt" >> requirements/docs.txt
test-docker:
docker run -v `(pwd)`:/edx/app/analytics-pipeline -it edxops/analytics-pipeline:latest make develop-local test-local
test-local:
# TODO: when we have better coverage, modify this to actually fail when coverage is too low.
rm -rf .coverage
LUIGI_CONFIG_PATH='config/test.cfg' python -m coverage run --rcfile=./.coveragerc -m nose --with-xunit --xunit-file=unittests.xml -A 'not acceptance'
test: test-requirements develop test-local
test-acceptance: test-requirements
LUIGI_CONFIG_PATH='config/test.cfg' python -m coverage run --rcfile=./.coveragerc -m nose --nocapture --with-xunit -A acceptance $(ONLY_TESTS)
test-acceptance-local:
REMOTE_TASK=$(shell which remote-task) LUIGI_CONFIG_PATH='config/test.cfg' ACCEPTANCE_TEST_CONFIG="/var/tmp/acceptance.json" python -m coverage run --rcfile=./.coveragerc -m nose --nocapture --with-xunit -A acceptance --stop -v $(ONLY_TESTS)
test-acceptance-local-all:
REMOTE_TASK=$(shell which remote-task) LUIGI_CONFIG_PATH='config/test.cfg' ACCEPTANCE_TEST_CONFIG="/var/tmp/acceptance.json" python -m coverage run --rcfile=./.coveragerc -m nose --nocapture --with-xunit -A acceptance -v
quality-docker:
docker run -v `(pwd)`:/edx/app/analytics-pipeline -it edxops/analytics-pipeline:latest isort --check-only --recursive edx/
docker run -v `(pwd)`:/edx/app/analytics-pipeline -it edxops/analytics-pipeline:latest pycodestyle edx
coverage-docker:
docker run -v `(pwd)`:/edx/app/analytics-pipeline -it edxops/analytics-pipeline:latest coverage xml
coverage-local: test-local
python -m coverage html
python -m coverage xml -o coverage.xml
diff-cover coverage.xml --html-report diff_cover.html
isort --check-only --recursive edx/
# Compute pep8 quality
diff-quality --violations=pycodestyle --html-report diff_quality_pep8.html
pycodestyle edx > pep8.report || echo "Not pep8 clean"
# Compute pylint quality
pylint -f parseable edx --msg-template "{path}:{line}: [{msg_id}({symbol}), {obj}] {msg}" > pylint.report || echo "Not pylint clean"
diff-quality --violations=pylint --html-report diff_quality_pylint.html pylint.report
coverage: test coverage-local
docs-requirements:
pip install -U -r requirements/pre.txt
pip install -U -r requirements/docs.txt --no-cache-dir --upgrade-strategy only-if-needed
python setup.py install --force
docs-local:
sphinx-build -b html docs/source docs
docs-clean:
rm -rf docs/*.* docs/_*
docs: docs-requirements docs-local
todo:
pylint --disable=all --enable=W0511 edx