Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade base image to Debian bookworm #22044

Merged
merged 4 commits into from
Mar 25, 2024
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
# Read the docs/topics/development/docker.md file for more information about this Dockerfile.
####################################################################################################

FROM python:3.10-slim-buster as base
FROM python:3.10-slim-bookworm as base

# Should change it to use ARG instead of ENV for OLYMPIA_UID/OLYMPIA_GID
# once the jenkins server is upgraded to support docker >= v1.9.0
Expand Down Expand Up @@ -43,6 +43,7 @@ RUN touch /addons-server-docker-container \
# Git, because we're using git-checkout dependencies
git \
# Dependencies for mysql-python (from mysql apt repo, not debian)
pkg-config \
mysql-client \
libmysqlclient-dev \
swig \
Expand Down
2 changes: 1 addition & 1 deletion docker/mysql.list
Original file line number Diff line number Diff line change
@@ -1 +1 @@
deb http://repo.mysql.com/apt/debian/ buster mysql-8.0
deb http://repo.mysql.com/apt/debian/ bookworm mysql-8.0
21 changes: 21 additions & 0 deletions src/olympia/core/apps.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,35 @@
import logging
import subprocess
import warnings

from django.apps import AppConfig
from django.conf import settings
from django.core.checks import Error, Tags, register
from django.utils.translation import gettext_lazy as _


log = logging.getLogger('z.startup')


class CustomTags(Tags):
custom_setup = 'setup'


@register(CustomTags.custom_setup)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just to clarify, this check is going to be executed when we run

./manage.py check

Probably worth specifying that in the PR description as it is less than obvious, and I'm not 100% sure it is true even now.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I added a docstring in c8c6a3f - the test I had added before should prove it's ran as part of manage.py check, which we trigger in the verify docker image GitHub Action. I've also made sure the check does fail if uwsgi isn't rebuilt.

def uwsgi_check(app_configs, **kwargs):
errors = []
command = ['uwsgi', '--version']
result = subprocess.run(command, capture_output=True)
if result.returncode != 0:
errors.append(
Error(
f'{" ".join(command)} returned a non-zero value',
id='setup.E001',
)
)
return errors


class CoreConfig(AppConfig):
name = 'olympia.core'
verbose_name = _('Core')
Expand Down
17 changes: 17 additions & 0 deletions src/olympia/core/tests/test_apps.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
from unittest import mock

from django.core.management import call_command
from django.core.management.base import SystemCheckError
from django.test import SimpleTestCase


class SystemCheckIntegrationTest(SimpleTestCase):
def test_uwsgi_check(self):
call_command('check')

with mock.patch('olympia.core.apps.subprocess') as subprocess:
subprocess.run.return_value.returncode = 127
with self.assertRaisesMessage(
SystemCheckError, 'uwsgi --version returned a non-zero value'
):
call_command('check')
Loading