diff --git a/CHANGELOG.md b/CHANGELOG.md index 2f8afa4..a72241e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # Changelog +## 0.5.0 + +- Require python 3.11 +- Require node 18 (current LTS) +- Upgrade dependencies + - `django` `3.2` -> `4.2` + - `psycopg` `2` -> `3` + - `psycopg` `2` -> `3` + ## 0.4.2 - Set `SECURE_PROXY_SSL_HEADER` setting for production diff --git a/docker/django b/docker/django index 18e23af..c5f4d61 100644 --- a/docker/django +++ b/docker/django @@ -1,5 +1,5 @@ # stage 1 -FROM python:3.9-bullseye as backend +FROM python:3.11-bookworm as backend RUN apt-get update && apt-get install -y --no-install-recommends \ vim \ @@ -18,7 +18,7 @@ RUN pip install -r requirements/base.txt # stage 2 -FROM node:16-bullseye AS frontend-build +FROM node:lts-bookworm AS frontend-build RUN apt-get update && apt-get install -y --no-install-recommends \ git \ @@ -36,7 +36,7 @@ RUN npm run build # stage 3 -FROM python:3.9-bullseye as production +FROM python:3.11-bookworm as production RUN apt-get update && apt-get install -y --no-install-recommends \ postgresql-client \ @@ -51,7 +51,7 @@ RUN mkdir /app/logs RUN mkdir /app/media RUN mkdir /app/bin -COPY --from=backend /usr/local/lib/python3.9 /usr/local/lib/python3.9 +COPY --from=backend /usr/local/lib/python3.11 /usr/local/lib/python3.11 COPY --from=backend /usr/local/bin/celery /usr/local/bin/celery COPY ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh @@ -81,7 +81,7 @@ RUN python src/manage.py collectstatic --noinput # (optional) stage 4 -FROM python:3.9-bullseye as development +FROM python:3.11-bookworm as development RUN apt-get update && apt-get install -y --no-install-recommends \ vim \ @@ -96,7 +96,7 @@ RUN mkdir /app/bin COPY ./requirements /app/requirements COPY ./bin/docker-entrypoint.sh /app/bin/docker-entrypoint.sh -COPY --from=backend /usr/local/lib/python3.9 /usr/local/lib/python3.9 +COPY --from=backend /usr/local/lib/python3.11 /usr/local/lib/python3.11 COPY --from=backend /usr/local/bin/celery /usr/local/bin/celery COPY --from=backend /app/src/ /app/src/ diff --git a/docker/webpack b/docker/webpack index 17ea2bc..0276a90 100644 --- a/docker/webpack +++ b/docker/webpack @@ -1,4 +1,4 @@ -FROM node:16-bullseye +FROM node:lts-bookworm WORKDIR /app RUN mkdir /app/src diff --git a/gitlab-ci/lint.yml b/gitlab-ci/lint.yml index 6169c51..981118c 100644 --- a/gitlab-ci/lint.yml +++ b/gitlab-ci/lint.yml @@ -1,6 +1,6 @@ python-linting: stage: lint - image: python:3.9-bullseye + image: python:3.11-bookworm before_script: - pip install -r requirements/ci.txt script: @@ -14,7 +14,7 @@ python-linting: javascript-linting: stage: lint - image: node:16-bullseye + image: node:lts-bookworm before_script: - npm install script: diff --git a/gitlab-ci/test.yml b/gitlab-ci/test.yml index e614268..58e505b 100644 --- a/gitlab-ci/test.yml +++ b/gitlab-ci/test.yml @@ -4,7 +4,7 @@ python-tests: services: - postgres:15 - memcached:1.5.22 - image: python:3.9-bullseye + image: python:3.11-bookworm before_script: - pip install -r requirements/ci.txt script: @@ -12,7 +12,7 @@ python-tests: javascript-tests: stage: test - image: node:16-bullseye + image: node:lts-bookworm before_script: - npm install script: diff --git a/package.json b/package.json index 76638ee..9b78806 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "newsreader", - "version": "0.4.2", + "version": "0.5.0", "description": "Application for viewing RSS feeds", "main": "index.js", "scripts": { diff --git a/pyproject.toml b/pyproject.toml index b8188a9..db0ebe5 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,24 +1,24 @@ [project] name = 'newsreader' -version = '0.4.2' +version = '0.5.0' authors = [{name = 'Sonny', email= 'sonnyba871@gmail.com'}] license = {text = 'GPL-3.0'} requires-python = '>=3.11' dependencies = [ - 'django~=3.2', + 'django~=4.2.0', 'celery~=5.0', - 'psycopg2', + 'psycopg~=3.1.10', 'django-axes', 'django-celery-beat~=2.5.0', - 'django-registration-redux~=2.7', + 'django-registration-redux~=2.12.0', 'django-rest-framework', 'drf-yasg', 'python-memcached', - 'python-dotenv~=0.12', + 'python-dotenv~=1.0.0', - 'ftfy~=5.8', + 'ftfy~=6.1.1', 'requests', 'requests_oauthlib', @@ -47,4 +47,4 @@ development = [ ci = ['coverage>=5.3.1'] -production = ['gunicorn~=20.0', 'sentry-sdk~=1.0'] +production = ['gunicorn~=21.2.0', 'sentry-sdk~=1.26.0'] diff --git a/requirements/base.txt b/requirements/base.txt index 53d38de..7d5df49 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -36,7 +36,7 @@ click-repl==0.3.0 # via celery cron-descriptor==1.4.0 # via django-celery-beat -django==3.2.19 +django==4.2.4 # via # django-axes # django-celery-beat @@ -62,7 +62,7 @@ drf-yasg==1.21.6 # via newsreader (pyproject.toml) feedparser==6.0.10 # via newsreader (pyproject.toml) -ftfy==5.9 +ftfy==6.1.1 # via newsreader (pyproject.toml) idna==3.4 # via requests @@ -78,7 +78,7 @@ packaging==23.1 # via drf-yasg prompt-toolkit==3.0.38 # via click-repl -psycopg2==2.9.6 +psycopg==3.1.10 # via newsreader (pyproject.toml) python-crontab==2.7.1 # via django-celery-beat @@ -86,13 +86,12 @@ python-dateutil==2.8.2 # via # celery # python-crontab -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via newsreader (pyproject.toml) python-memcached==1.59 # via newsreader (pyproject.toml) pytz==2023.3 # via - # django # django-timezone-field # djangorestframework # drf-yasg @@ -119,6 +118,7 @@ typing-extensions==4.6.3 # via # asgiref # kombu + # psycopg tzdata==2023.3 # via # celery diff --git a/requirements/ci.txt b/requirements/ci.txt index 4e2403e..d543eab 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -81,7 +81,7 @@ cron-descriptor==1.4.0 # -r requirements/base.txt # -r requirements/testing.txt # django-celery-beat -django==3.2.19 +django==4.2.4 # via # -r requirements/base.txt # django-axes @@ -137,7 +137,7 @@ freezegun==1.2.2 # via # -r requirements/testing.txt # newsreader (pyproject.toml) -ftfy==5.9 +ftfy==6.1.1 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -192,7 +192,7 @@ prompt-toolkit==3.0.38 # -r requirements/base.txt # -r requirements/testing.txt # click-repl -psycopg2==2.9.6 +psycopg==3.1.10 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -213,7 +213,7 @@ python-dateutil==2.8.2 # faker # freezegun # python-crontab -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -225,7 +225,6 @@ pytz==2023.3 # via # -r requirements/base.txt # -r requirements/testing.txt - # django # django-timezone-field # djangorestframework # drf-yasg @@ -281,6 +280,7 @@ typing-extensions==4.6.3 # asgiref # black # kombu + # psycopg tzdata==2023.3 # via # -r requirements/base.txt diff --git a/requirements/development.txt b/requirements/development.txt index a77dd44..3388870 100644 --- a/requirements/development.txt +++ b/requirements/development.txt @@ -82,7 +82,7 @@ cron-descriptor==1.4.0 # -r requirements/base.txt # -r requirements/testing.txt # django-celery-beat -django==3.2.19 +django==4.2.4 # via # -r requirements/base.txt # django-axes @@ -144,7 +144,7 @@ freezegun==1.2.2 # via # -r requirements/testing.txt # newsreader (pyproject.toml) -ftfy==5.9 +ftfy==6.1.1 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -202,7 +202,7 @@ prompt-toolkit==3.0.38 # -r requirements/base.txt # -r requirements/testing.txt # click-repl -psycopg2==2.9.6 +psycopg==3.1.10 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -225,7 +225,7 @@ python-dateutil==2.8.2 # faker # freezegun # python-crontab -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -237,7 +237,6 @@ pytz==2023.3 # via # -r requirements/base.txt # -r requirements/testing.txt - # django # django-timezone-field # djangorestframework # drf-yasg @@ -296,6 +295,7 @@ typing-extensions==4.6.3 # asgiref # black # kombu + # psycopg tzdata==2023.3 # via # -r requirements/base.txt diff --git a/requirements/production.txt b/requirements/production.txt index cf0aa06..0d7221e 100644 --- a/requirements/production.txt +++ b/requirements/production.txt @@ -61,7 +61,7 @@ cron-descriptor==1.4.0 # via # -r requirements/base.txt # django-celery-beat -django==3.2.19 +django==4.2.4 # via # -r requirements/base.txt # django-axes @@ -103,11 +103,11 @@ feedparser==6.0.10 # via # -r requirements/base.txt # newsreader (pyproject.toml) -ftfy==5.9 +ftfy==6.1.1 # via # -r requirements/base.txt # newsreader (pyproject.toml) -gunicorn==20.1.0 +gunicorn==21.2.0 # via newsreader (pyproject.toml) idna==3.4 # via @@ -133,11 +133,12 @@ packaging==23.1 # via # -r requirements/base.txt # drf-yasg + # gunicorn prompt-toolkit==3.0.38 # via # -r requirements/base.txt # click-repl -psycopg2==2.9.6 +psycopg==3.1.10 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -150,7 +151,7 @@ python-dateutil==2.8.2 # -r requirements/base.txt # celery # python-crontab -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -161,7 +162,6 @@ python-memcached==1.59 pytz==2023.3 # via # -r requirements/base.txt - # django # django-timezone-field # djangorestframework # drf-yasg @@ -203,6 +203,7 @@ typing-extensions==4.6.3 # -r requirements/base.txt # asgiref # kombu + # psycopg tzdata==2023.3 # via # -r requirements/base.txt diff --git a/requirements/testing.txt b/requirements/testing.txt index 96ddce9..7daf95c 100644 --- a/requirements/testing.txt +++ b/requirements/testing.txt @@ -65,7 +65,7 @@ cron-descriptor==1.4.0 # via # -r requirements/base.txt # django-celery-beat -django==3.2.19 +django==4.2.4 # via # -r requirements/base.txt # django-axes @@ -113,7 +113,7 @@ feedparser==6.0.10 # newsreader (pyproject.toml) freezegun==1.2.2 # via newsreader (pyproject.toml) -ftfy==5.9 +ftfy==6.1.1 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -154,7 +154,7 @@ prompt-toolkit==3.0.38 # via # -r requirements/base.txt # click-repl -psycopg2==2.9.6 +psycopg==3.1.10 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -171,7 +171,7 @@ python-dateutil==2.8.2 # faker # freezegun # python-crontab -python-dotenv==0.21.1 +python-dotenv==1.0.0 # via # -r requirements/base.txt # newsreader (pyproject.toml) @@ -182,7 +182,6 @@ python-memcached==1.59 pytz==2023.3 # via # -r requirements/base.txt - # django # django-timezone-field # djangorestframework # drf-yasg @@ -229,6 +228,7 @@ typing-extensions==4.6.3 # asgiref # black # kombu + # psycopg tzdata==2023.3 # via # -r requirements/base.txt