diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 21cbce3ab3aa6ba72cc5dbc33b728f7a70fce158..fc0274d8ef1b7e5aaea3141e067c925c45cd5bd3 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -17,9 +17,9 @@ before_script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY .test: &test - image: igwn/base:bullseye + image: igwn/base:bookworm services: - - postgres:13.11 + - postgres:15.6 - memcached variables: AWS_SES_ACCESS_KEY_ID: "fake_aws_id" @@ -61,11 +61,13 @@ before_script: - PYTHON_MAJOR="${PYTHON_VERSION:0:1}" - PYTHON="python3" # install build requirements + - apt-get -y install gnupg - sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' - wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - - apt-get -yqq update - apt-get -o dir::cache::archives="${APT_CACHE_DIR}" install -yqq git + gnupg libldap2-dev libsasl2-dev libssl-dev @@ -79,13 +81,13 @@ before_script: libfreetype6-dev libxslt-dev ${PYTHON}-pip - postgresql-13 - postgresql-client-13 + postgresql-15 + postgresql-client-15 libpq-dev # upgrade pip (requirement for lalsuite) - - ${PYTHON} -m pip install --upgrade pip + - ${PYTHON} -m pip install --upgrade pip --break-system-packages # install everything else from pip - - ${PYTHON} -m pip install -r requirements.txt + - ${PYTHON} -m pip install -r requirements.txt --break-system-packages # create logs path required for tests - mkdir -pv ../logs/ # list packages @@ -111,7 +113,7 @@ before_script: tags: - executor-docker -test:3.9: +test:3.11: <<: *test branch_image: diff --git a/Dockerfile b/Dockerfile index 6607168a879164a423515e74d9c17aa84c510bef..f989fc2f3a8b694eff23de691ae597fcfb21de8a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,17 @@ -FROM igwn/base:bullseye +FROM igwn/base:bookworm LABEL name="LIGO GraceDB Django application" \ maintainer="alexander.pace@ligo.org" \ - date="20230802" + date="20240306" ARG SETTINGS_MODULE="config.settings.container.dev" COPY docker/SWITCHaai-swdistrib.gpg /etc/apt/trusted.gpg.d COPY docker/backports.pref /etc/apt/preferences.d -RUN echo 'deb http://deb.debian.org/debian bullseye-backports main' > /etc/apt/sources.list.d/backports.list -RUN echo 'deb http://apt.postgresql.org/pub/repos/apt bullseye-pgdg main' > /etc/apt/sources.list.d/pgdg.list +RUN apt-get -y install gnupg +RUN echo 'deb http://deb.debian.org/debian bookworm-backports main' > /etc/apt/sources.list.d/backports.list +RUN echo 'deb http://apt.postgresql.org/pub/repos/apt bookworm-pgdg main' > /etc/apt/sources.list.d/pgdg.list RUN wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - RUN apt-get update && \ + apt-get upgrade && \ apt-get install --install-recommends --assume-yes \ apache2 \ gcc \ @@ -19,6 +21,7 @@ RUN apt-get update && \ libapache2-mod-shib \ libapache2-mod-xsendfile \ libldap2-dev \ + libldap-2.5-0 \ libsasl2-dev \ libsasl2-modules-gssapi-mit \ libxml2-dev \ @@ -33,11 +36,11 @@ RUN apt-get update && \ npm \ osg-ca-certs \ php \ - php7.4-pgsql \ - php7.4-mbstring \ - postgresql-client-13 \ - python3.9 \ - python3.9-dev \ + php8.2-pgsql \ + php8.2-mbstring \ + postgresql-client-15 \ + python3 \ + python3-dev \ python3-libxml2 \ python3-pip \ procps \ @@ -46,8 +49,7 @@ RUN apt-get update && \ libssl-dev \ swig \ htop \ - telnet \ - vim && \ + telnet && \ apt-get clean && \ curl -sL https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ apt-get update && apt-get install --assume-yes yarn && \ @@ -76,7 +78,7 @@ COPY docker/mpm_prefork.conf /etc/apache2/mods-enabled/mpm_prefork.conf # Enable mpm_event module: RUN rm /etc/apache2/mods-enabled/mpm_prefork.* -RUN rm /etc/apache2/mods-enabled/php7.4.* +RUN rm /etc/apache2/mods-enabled/php8.2.* RUN cp /etc/apache2/mods-available/mpm_event.* /etc/apache2/mods-enabled/ # Shibboleth configs and certs: @@ -96,14 +98,14 @@ ADD . /app/gracedb_project # install gracedb application itself WORKDIR /app/gracedb_project RUN bower install --allow-root -RUN pip3 install --upgrade pip -RUN pip3 install -r requirements.txt +RUN pip3 install --upgrade pip --break-system-packages +RUN pip3 install -r requirements.txt --break-system-packages # install supervisor from pip -RUN pip3 install supervisor +RUN pip3 install supervisor --break-system-packages # Give pip-installed packages priority over distribution packages -ENV PYTHONPATH /usr/local/lib/python3.9/dist-packages:$PYTHONPATH +ENV PYTHONPATH /usr/local/lib/python3.11/dist-packages:$PYTHONPATH ENV ENABLE_SHIBD false ENV ENABLE_OVERSEER true ENV VIRTUAL_ENV /dummy/ @@ -167,5 +169,9 @@ RUN mkdir /app/scitokens_cache && \ chmod 0750 /app/scitokens_cache ENV XDG_CACHE_HOME /app/scitokens_cache +# patch voeventparse for python3.10+: +RUN sed -i 's/collections.Iterable/collections.abc.Iterable/g' /usr/local/lib/python3.11/dist-packages/voeventparse/voevent.py + + ENTRYPOINT [ "/usr/local/bin/entrypoint" ] CMD ["/usr/local/bin/supervisord", "-c", "/etc/supervisor/supervisord.conf"] diff --git a/config/settings/base.py b/config/settings/base.py index f8b7b2405a0ba7b8d7aaf89a13e1a3ae3ab541e8..a895c33abac10724dc23af1d04963375d5d09fd6 100644 --- a/config/settings/base.py +++ b/config/settings/base.py @@ -1,4 +1,4 @@ -from cloghandler import ConcurrentRotatingFileHandler +from concurrent_log_handler import ConcurrentRotatingFileHandler from datetime import datetime, timedelta import os, time, logging from os.path import abspath, dirname, join diff --git a/requirements.txt b/requirements.txt index 404d9d23a62eea714e3ef297c64a4841c2f06f0f..99a59d82b4fef9bc859e2eca3b077ecedf7232bd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,7 @@ adc-streaming==2.3.2 adrf==0.1.2 aws-xray-sdk==2.12.1 -ConcurrentLogHandler==0.9.1 +concurrent-log-handler==0.9.20 confluent-kafka==2.3.0 cryptography==42.0.3 Django==4.2.10 @@ -9,9 +9,9 @@ django-computedfields==0.2.5 django-debug-toolbar==4.3.0 django-extensions==3.2.3 django-guardian==2.4.0 -django-model-utils==4.2.0 +django-model-utils==4.3.1 django-postgres-vacuum==2020.12.24 -django-ses==2.3.0 +django-ses==3.2.2 django-silk==4.2.0 django-twilio==0.14.3.2 django-user-sessions==2.0.0 @@ -31,11 +31,11 @@ ipdb==0.13.13 ipython==8.14.0 #jwt==1.3.1 Jinja2==3.1.2 -lalsuite==6.82 +lalsuite==7.21 python-ligo-lw==1.8.3 lxml==4.9.3 -matplotlib==3.3.4 -mock==2.0.0 +matplotlib==3.6.2 +mock==4.0.3 numpy==1.25.2 packaging==23.1 phonenumbers==8.13.18 @@ -62,4 +62,4 @@ pytz==2023.3 pyasn1==0.4.8 pyasn1-modules==0.2.8 # pinning setuptools because of 2to3 errors from ConcurrentLogHandler: -setuptools==54.2.0 +#setuptools==54.2.0