Use pip-tools for dependency management
This commit is contained in:
parent
7132fb743c
commit
13c355bf0a
9 changed files with 196 additions and 29 deletions
|
@ -33,7 +33,7 @@ pip:
|
||||||
script:
|
script:
|
||||||
- python -m venv env
|
- python -m venv env
|
||||||
- source env/bin/activate
|
- source env/bin/activate
|
||||||
- pip install -r dev-requirements.txt
|
- pip install -r requirements/dev.txt
|
||||||
artifacts:
|
artifacts:
|
||||||
name: 'pip-$CI_JOB_ID'
|
name: 'pip-$CI_JOB_ID'
|
||||||
paths:
|
paths:
|
||||||
|
@ -103,3 +103,10 @@ prettier:
|
||||||
<<: *node_test_template
|
<<: *node_test_template
|
||||||
script:
|
script:
|
||||||
- npm run lint
|
- npm run lint
|
||||||
|
|
||||||
|
pip_tools:
|
||||||
|
<<: *python_test_template
|
||||||
|
script:
|
||||||
|
- ./scripts/compile-requirements.sh
|
||||||
|
- git diff
|
||||||
|
- git diff-index --quiet HEAD --
|
||||||
|
|
|
@ -25,8 +25,8 @@ EXPOSE 8000
|
||||||
USER website
|
USER website
|
||||||
|
|
||||||
RUN python -m venv $VIRTUAL_ENV
|
RUN python -m venv $VIRTUAL_ENV
|
||||||
COPY --chown=website requirements.txt ./
|
COPY --chown=website requirements/base.txt ./requirements/base.txt
|
||||||
RUN pip install --upgrade pip && pip install -r requirements.txt
|
RUN pip install --upgrade pip && pip install -r ./requirements/base.txt
|
||||||
|
|
||||||
COPY --chown=website --from=frontend ./static/build ./static/build
|
COPY --chown=website --from=frontend ./static/build ./static/build
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ RUN curl -sSf https://just.systems/install.sh | bash -s -- --to /usr/bin
|
||||||
# Restore user
|
# Restore user
|
||||||
USER website
|
USER website
|
||||||
|
|
||||||
COPY --chown=website dev-requirements.txt ./
|
COPY --chown=website requirements/dev.txt ./requirements/dev.txt
|
||||||
RUN pip install --upgrade pip && pip install -r dev-requirements.txt
|
RUN pip install --upgrade pip && pip install -r requirements/dev.txt
|
||||||
|
|
||||||
CMD sleep infinity
|
CMD sleep infinity
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
-r requirements.txt
|
|
||||||
|
|
||||||
honcho==1.1.0
|
|
||||||
django-stubs[compatible-mypy]==1.11.0
|
|
||||||
flake8==4.0.1
|
|
||||||
isort==5.10.1
|
|
||||||
black==22.3.0
|
|
||||||
django-browser-reload==1.6.0
|
|
||||||
django-debug-toolbar==3.4.0
|
|
||||||
types-requests==2.27.1
|
|
|
@ -1,14 +0,0 @@
|
||||||
Django==4.0.5
|
|
||||||
wagtail==3.0
|
|
||||||
django-environ==0.8.1
|
|
||||||
whitenoise[brotli]==6.2.0
|
|
||||||
pygments==2.12.0
|
|
||||||
beautifulsoup4==4.9.3
|
|
||||||
lxml==4.9.0
|
|
||||||
more-itertools==8.13.0
|
|
||||||
requests==2.27.1
|
|
||||||
wagtail-generic-chooser==0.4.1
|
|
||||||
django-rq==2.5.1
|
|
||||||
django-redis==5.2.0
|
|
||||||
wagtail-draftail-snippet==0.4.1
|
|
||||||
gunicorn==20.1.0
|
|
14
requirements/base.in
Normal file
14
requirements/base.in
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
Django
|
||||||
|
wagtail
|
||||||
|
django-environ
|
||||||
|
whitenoise[brotli]
|
||||||
|
pygments
|
||||||
|
beautifulsoup4
|
||||||
|
lxml
|
||||||
|
more-itertools
|
||||||
|
requests
|
||||||
|
wagtail-generic-chooser
|
||||||
|
django-rq
|
||||||
|
django-redis
|
||||||
|
wagtail-draftail-snippet
|
||||||
|
gunicorn
|
61
requirements/base.txt
Normal file
61
requirements/base.txt
Normal file
|
@ -0,0 +1,61 @@
|
||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile with python 3.10
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile --annotation-style=line --output-file=requirements/base.txt requirements/base.in
|
||||||
|
#
|
||||||
|
anyascii==0.3.1 # via wagtail
|
||||||
|
asgiref==3.5.2 # via django
|
||||||
|
async-timeout==4.0.2 # via redis
|
||||||
|
beautifulsoup4==4.9.3 # via -r requirements/base.in, wagtail
|
||||||
|
brotli==1.0.9 # via whitenoise
|
||||||
|
certifi==2022.6.15 # via requests
|
||||||
|
charset-normalizer==2.1.0 # via requests
|
||||||
|
click==8.1.3 # via rq
|
||||||
|
deprecated==1.2.13 # via redis
|
||||||
|
django==4.0.6 # via -r requirements/base.in, django-filter, django-modelcluster, django-permissionedforms, django-redis, django-rq, django-taggit, django-treebeard, djangorestframework, wagtail
|
||||||
|
django-environ==0.9.0 # via -r requirements/base.in
|
||||||
|
django-filter==21.1 # via wagtail
|
||||||
|
django-modelcluster==6.0 # via wagtail
|
||||||
|
django-permissionedforms==0.1 # via wagtail
|
||||||
|
django-redis==5.2.0 # via -r requirements/base.in
|
||||||
|
django-rq==2.5.1 # via -r requirements/base.in
|
||||||
|
django-taggit==2.1.0 # via wagtail
|
||||||
|
django-treebeard==4.5.1 # via wagtail
|
||||||
|
djangorestframework==3.13.1 # via wagtail
|
||||||
|
draftjs-exporter==2.1.7 # via wagtail
|
||||||
|
et-xmlfile==1.1.0 # via openpyxl
|
||||||
|
gunicorn==20.1.0 # via -r requirements/base.in
|
||||||
|
html5lib==1.1 # via wagtail
|
||||||
|
idna==3.3 # via requests
|
||||||
|
l18n==2021.3 # via wagtail
|
||||||
|
lxml==4.9.1 # via -r requirements/base.in
|
||||||
|
more-itertools==8.13.0 # via -r requirements/base.in
|
||||||
|
openpyxl==3.0.10 # via tablib
|
||||||
|
packaging==21.3 # via redis
|
||||||
|
pillow==9.2.0 # via wagtail
|
||||||
|
pygments==2.12.0 # via -r requirements/base.in
|
||||||
|
pyparsing==3.0.9 # via packaging
|
||||||
|
pytz==2022.1 # via django-modelcluster, djangorestframework, l18n
|
||||||
|
redis==4.3.4 # via django-redis, django-rq, rq
|
||||||
|
requests==2.28.1 # via -r requirements/base.in, wagtail, wagtail-generic-chooser
|
||||||
|
rq==1.10.1 # via django-rq
|
||||||
|
six==1.16.0 # via html5lib, l18n
|
||||||
|
soupsieve==2.3.2.post1 # via beautifulsoup4
|
||||||
|
sqlparse==0.4.2 # via django
|
||||||
|
tablib[xls,xlsx]==3.2.1 # via wagtail
|
||||||
|
telepath==0.2 # via wagtail
|
||||||
|
urllib3==1.26.11 # via requests
|
||||||
|
wagtail==3.0.1 # via -r requirements/base.in, wagtail-draftail-snippet
|
||||||
|
wagtail-draftail-snippet==0.4.1 # via -r requirements/base.in
|
||||||
|
wagtail-generic-chooser==0.4.1 # via -r requirements/base.in
|
||||||
|
webencodings==0.5.1 # via html5lib
|
||||||
|
whitenoise[brotli]==6.2.0 # via -r requirements/base.in
|
||||||
|
willow==1.4.1 # via wagtail
|
||||||
|
wrapt==1.14.1 # via deprecated
|
||||||
|
xlrd==2.0.1 # via tablib
|
||||||
|
xlsxwriter==3.0.3 # via wagtail
|
||||||
|
xlwt==1.3.0 # via tablib
|
||||||
|
|
||||||
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
|
# setuptools
|
12
requirements/dev.in
Normal file
12
requirements/dev.in
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
-r base.txt
|
||||||
|
|
||||||
|
pip-tools
|
||||||
|
|
||||||
|
honcho
|
||||||
|
django-stubs[compatible-mypy]
|
||||||
|
flake8
|
||||||
|
isort
|
||||||
|
black
|
||||||
|
django-browser-reload
|
||||||
|
django-debug-toolbar
|
||||||
|
types-requests
|
87
requirements/dev.txt
Normal file
87
requirements/dev.txt
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
#
|
||||||
|
# This file is autogenerated by pip-compile with python 3.10
|
||||||
|
# To update, run:
|
||||||
|
#
|
||||||
|
# pip-compile --annotation-style=line --output-file=requirements/dev.txt requirements/dev.in
|
||||||
|
#
|
||||||
|
anyascii==0.3.1 # via -r requirements/base.txt, wagtail
|
||||||
|
asgiref==3.5.2 # via -r requirements/base.txt, django
|
||||||
|
async-timeout==4.0.2 # via -r requirements/base.txt, redis
|
||||||
|
beautifulsoup4==4.9.3 # via -r requirements/base.txt, wagtail
|
||||||
|
black==22.6.0 # via -r requirements/dev.in
|
||||||
|
brotli==1.0.9 # via -r requirements/base.txt, whitenoise
|
||||||
|
build==0.8.0 # via pip-tools
|
||||||
|
certifi==2022.6.15 # via -r requirements/base.txt, requests
|
||||||
|
charset-normalizer==2.1.0 # via -r requirements/base.txt, requests
|
||||||
|
click==8.1.3 # via -r requirements/base.txt, black, pip-tools, rq
|
||||||
|
deprecated==1.2.13 # via -r requirements/base.txt, redis
|
||||||
|
django==4.0.6 # via -r requirements/base.txt, django-browser-reload, django-debug-toolbar, django-filter, django-modelcluster, django-permissionedforms, django-redis, django-rq, django-stubs, django-stubs-ext, django-taggit, django-treebeard, djangorestframework, wagtail
|
||||||
|
django-browser-reload==1.6.0 # via -r requirements/dev.in
|
||||||
|
django-debug-toolbar==3.5.0 # via -r requirements/dev.in
|
||||||
|
django-environ==0.9.0 # via -r requirements/base.txt
|
||||||
|
django-filter==21.1 # via -r requirements/base.txt, wagtail
|
||||||
|
django-modelcluster==6.0 # via -r requirements/base.txt, wagtail
|
||||||
|
django-permissionedforms==0.1 # via -r requirements/base.txt, wagtail
|
||||||
|
django-redis==5.2.0 # via -r requirements/base.txt
|
||||||
|
django-rq==2.5.1 # via -r requirements/base.txt
|
||||||
|
django-stubs[compatible-mypy]==1.12.0 # via -r requirements/dev.in
|
||||||
|
django-stubs-ext==0.5.0 # via django-stubs
|
||||||
|
django-taggit==2.1.0 # via -r requirements/base.txt, wagtail
|
||||||
|
django-treebeard==4.5.1 # via -r requirements/base.txt, wagtail
|
||||||
|
djangorestframework==3.13.1 # via -r requirements/base.txt, wagtail
|
||||||
|
draftjs-exporter==2.1.7 # via -r requirements/base.txt, wagtail
|
||||||
|
et-xmlfile==1.1.0 # via -r requirements/base.txt, openpyxl
|
||||||
|
flake8==4.0.1 # via -r requirements/dev.in
|
||||||
|
gunicorn==20.1.0 # via -r requirements/base.txt
|
||||||
|
honcho==1.1.0 # via -r requirements/dev.in
|
||||||
|
html5lib==1.1 # via -r requirements/base.txt, wagtail
|
||||||
|
idna==3.3 # via -r requirements/base.txt, requests
|
||||||
|
isort==5.10.1 # via -r requirements/dev.in
|
||||||
|
l18n==2021.3 # via -r requirements/base.txt, wagtail
|
||||||
|
lxml==4.9.1 # via -r requirements/base.txt
|
||||||
|
mccabe==0.6.1 # via flake8
|
||||||
|
more-itertools==8.13.0 # via -r requirements/base.txt
|
||||||
|
mypy==0.971 # via django-stubs
|
||||||
|
mypy-extensions==0.4.3 # via black, mypy
|
||||||
|
openpyxl==3.0.10 # via -r requirements/base.txt, tablib
|
||||||
|
packaging==21.3 # via -r requirements/base.txt, build, redis
|
||||||
|
pathspec==0.9.0 # via black
|
||||||
|
pep517==0.12.0 # via build
|
||||||
|
pillow==9.2.0 # via -r requirements/base.txt, wagtail
|
||||||
|
pip-tools==6.8.0 # via -r requirements/dev.in
|
||||||
|
platformdirs==2.5.2 # via black
|
||||||
|
pycodestyle==2.8.0 # via flake8
|
||||||
|
pyflakes==2.4.0 # via flake8
|
||||||
|
pygments==2.12.0 # via -r requirements/base.txt
|
||||||
|
pyparsing==3.0.9 # via -r requirements/base.txt, packaging
|
||||||
|
pytz==2022.1 # via -r requirements/base.txt, django-modelcluster, djangorestframework, l18n
|
||||||
|
redis==4.3.4 # via -r requirements/base.txt, django-redis, django-rq, rq
|
||||||
|
requests==2.28.1 # via -r requirements/base.txt, wagtail, wagtail-generic-chooser
|
||||||
|
rq==1.10.1 # via -r requirements/base.txt, django-rq
|
||||||
|
six==1.16.0 # via -r requirements/base.txt, html5lib, l18n
|
||||||
|
soupsieve==2.3.2.post1 # via -r requirements/base.txt, beautifulsoup4
|
||||||
|
sqlparse==0.4.2 # via -r requirements/base.txt, django, django-debug-toolbar
|
||||||
|
tablib[xls,xlsx]==3.2.1 # via -r requirements/base.txt, wagtail
|
||||||
|
telepath==0.2 # via -r requirements/base.txt, wagtail
|
||||||
|
tomli==2.0.1 # via black, build, django-stubs, mypy
|
||||||
|
types-pytz==2022.1.2 # via django-stubs
|
||||||
|
types-pyyaml==6.0.11 # via django-stubs
|
||||||
|
types-requests==2.28.5 # via -r requirements/dev.in
|
||||||
|
types-urllib3==1.26.17 # via types-requests
|
||||||
|
typing-extensions==4.3.0 # via django-stubs, django-stubs-ext, mypy
|
||||||
|
urllib3==1.26.11 # via -r requirements/base.txt, requests
|
||||||
|
wagtail==3.0.1 # via -r requirements/base.txt, wagtail-draftail-snippet
|
||||||
|
wagtail-draftail-snippet==0.4.1 # via -r requirements/base.txt
|
||||||
|
wagtail-generic-chooser==0.4.1 # via -r requirements/base.txt
|
||||||
|
webencodings==0.5.1 # via -r requirements/base.txt, html5lib
|
||||||
|
wheel==0.37.1 # via pip-tools
|
||||||
|
whitenoise[brotli]==6.2.0 # via -r requirements/base.txt
|
||||||
|
willow==1.4.1 # via -r requirements/base.txt, wagtail
|
||||||
|
wrapt==1.14.1 # via -r requirements/base.txt, deprecated
|
||||||
|
xlrd==2.0.1 # via -r requirements/base.txt, tablib
|
||||||
|
xlsxwriter==3.0.3 # via -r requirements/base.txt, wagtail
|
||||||
|
xlwt==1.3.0 # via -r requirements/base.txt, tablib
|
||||||
|
|
||||||
|
# The following packages are considered to be unsafe in a requirements file:
|
||||||
|
# pip
|
||||||
|
# setuptools
|
10
scripts/compile-requirements.sh
Executable file
10
scripts/compile-requirements.sh
Executable file
|
@ -0,0 +1,10 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
set -ex
|
||||||
|
|
||||||
|
cd $(dirname $0)/..
|
||||||
|
|
||||||
|
COMMON_ARGS="--quiet --annotation-style=line"
|
||||||
|
|
||||||
|
pip-compile $COMMON_ARGS -o requirements/base.txt requirements/base.in
|
||||||
|
pip-compile $COMMON_ARGS -o requirements/dev.txt requirements/dev.in
|
Loading…
Reference in a new issue