From e47860c9cb77c3b083cb0d0f8c70c6da3b37c15f Mon Sep 17 00:00:00 2001 From: javierdelapuente Date: Mon, 16 Sep 2024 17:02:46 +0200 Subject: [PATCH] feat: add support for base ubuntu@24.04 to django and flask extensions (#708) * Add support for base ubuntu@24.04 to django and flask extensions * put the spread tests for django where they are run * Remove the rockcraft.yaml and prune docker in spread test * add ignore imports in spread test for Django * update doc for new 24.04 base * typo in docs --- docs/reference/extensions/django-framework.rst | 4 ++-- docs/reference/extensions/flask-framework.rst | 4 ++-- rockcraft/extensions/gunicorn.py | 2 +- .../extension-django/example_django/.foobar | 0 .../extension-django/example_django/example_django/asgi.py | 4 +++- .../example_django/example_django/settings.py | 0 .../extension-django/example_django/example_django/urls.py | 4 ++-- .../extension-django/example_django/example_django/wsgi.py | 4 +++- .../extension-django/example_django/manage.py | 4 +++- .../extension-django/requirements.txt | 0 .../{general => rockcraft}/extension-django/task.yaml | 7 +++++++ tests/spread/rockcraft/extension-flask/task.yaml | 1 + 12 files changed, 24 insertions(+), 10 deletions(-) rename tests/spread/{general => rockcraft}/extension-django/example_django/.foobar (100%) rename tests/spread/{general => rockcraft}/extension-django/example_django/example_django/asgi.py (78%) rename tests/spread/{general => rockcraft}/extension-django/example_django/example_django/settings.py (100%) rename tests/spread/{general => rockcraft}/extension-django/example_django/example_django/urls.py (83%) rename tests/spread/{general => rockcraft}/extension-django/example_django/example_django/wsgi.py (78%) rename tests/spread/{general => rockcraft}/extension-django/example_django/manage.py (81%) rename tests/spread/{general => rockcraft}/extension-django/requirements.txt (100%) rename tests/spread/{general => rockcraft}/extension-django/task.yaml (88%) diff --git a/docs/reference/extensions/django-framework.rst b/docs/reference/extensions/django-framework.rst index 4a73bea16..f16731f49 100644 --- a/docs/reference/extensions/django-framework.rst +++ b/docs/reference/extensions/django-framework.rst @@ -14,8 +14,8 @@ A statsd-exporter is installed alongside the Gunicorn server to export Gunicorn server metrics. .. note:: - The Django extension is compatible with the ``bare`` and ``ubuntu@22.04`` - bases. + The Django extension is compatible with the ``bare``, ``ubuntu@22.04`` + and ``ubuntu@24.04`` bases. Project requirements ==================== diff --git a/docs/reference/extensions/flask-framework.rst b/docs/reference/extensions/flask-framework.rst index 3292af697..6902157b3 100644 --- a/docs/reference/extensions/flask-framework.rst +++ b/docs/reference/extensions/flask-framework.rst @@ -13,8 +13,8 @@ A statsd-exporter is installed alongside the Gunicorn server to export Gunicorn server metrics. .. note:: - The Flask extension is compatible with the ``bare`` and ``ubuntu@22.04`` - bases. + The Flask extension is compatible with the ``bare``, ``ubuntu@22.04`` + and ``ubuntu@24.04`` bases. Project requirements ==================== diff --git a/rockcraft/extensions/gunicorn.py b/rockcraft/extensions/gunicorn.py index 48f538818..0559ecb5f 100644 --- a/rockcraft/extensions/gunicorn.py +++ b/rockcraft/extensions/gunicorn.py @@ -37,7 +37,7 @@ class _GunicornBase(Extension): @override def get_supported_bases() -> tuple[str, ...]: """Return supported bases.""" - return "bare", "ubuntu@22.04", "ubuntu:22.04" + return "bare", "ubuntu@22.04", "ubuntu:22.04", "ubuntu@24.04" @staticmethod @override diff --git a/tests/spread/general/extension-django/example_django/.foobar b/tests/spread/rockcraft/extension-django/example_django/.foobar similarity index 100% rename from tests/spread/general/extension-django/example_django/.foobar rename to tests/spread/rockcraft/extension-django/example_django/.foobar diff --git a/tests/spread/general/extension-django/example_django/example_django/asgi.py b/tests/spread/rockcraft/extension-django/example_django/example_django/asgi.py similarity index 78% rename from tests/spread/general/extension-django/example_django/example_django/asgi.py rename to tests/spread/rockcraft/extension-django/example_django/example_django/asgi.py index a25bac07c..a346924e6 100644 --- a/tests/spread/general/extension-django/example_django/example_django/asgi.py +++ b/tests/spread/rockcraft/extension-django/example_django/example_django/asgi.py @@ -9,7 +9,9 @@ import os -from django.core.asgi import get_asgi_application +from django.core.asgi import ( # pyright: ignore[reportMissingImports] + get_asgi_application, +) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example_django.settings") diff --git a/tests/spread/general/extension-django/example_django/example_django/settings.py b/tests/spread/rockcraft/extension-django/example_django/example_django/settings.py similarity index 100% rename from tests/spread/general/extension-django/example_django/example_django/settings.py rename to tests/spread/rockcraft/extension-django/example_django/example_django/settings.py diff --git a/tests/spread/general/extension-django/example_django/example_django/urls.py b/tests/spread/rockcraft/extension-django/example_django/example_django/urls.py similarity index 83% rename from tests/spread/general/extension-django/example_django/example_django/urls.py rename to tests/spread/rockcraft/extension-django/example_django/example_django/urls.py index 0f39d3c26..be9f30387 100644 --- a/tests/spread/general/extension-django/example_django/example_django/urls.py +++ b/tests/spread/rockcraft/extension-django/example_django/example_django/urls.py @@ -15,8 +15,8 @@ 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) """ -from django.contrib import admin -from django.urls import path +from django.contrib import admin # pyright: ignore[reportMissingImports] +from django.urls import path # pyright: ignore[reportMissingImports] urlpatterns = [ path("admin/", admin.site.urls), diff --git a/tests/spread/general/extension-django/example_django/example_django/wsgi.py b/tests/spread/rockcraft/extension-django/example_django/example_django/wsgi.py similarity index 78% rename from tests/spread/general/extension-django/example_django/example_django/wsgi.py rename to tests/spread/rockcraft/extension-django/example_django/example_django/wsgi.py index 36a83afcb..88fab9f5d 100644 --- a/tests/spread/general/extension-django/example_django/example_django/wsgi.py +++ b/tests/spread/rockcraft/extension-django/example_django/example_django/wsgi.py @@ -9,7 +9,9 @@ import os -from django.core.wsgi import get_wsgi_application +from django.core.wsgi import ( # pyright: ignore[reportMissingImports] + get_wsgi_application, +) os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example_django.settings") diff --git a/tests/spread/general/extension-django/example_django/manage.py b/tests/spread/rockcraft/extension-django/example_django/manage.py similarity index 81% rename from tests/spread/general/extension-django/example_django/manage.py rename to tests/spread/rockcraft/extension-django/example_django/manage.py index 77dced937..fa33e0d0f 100755 --- a/tests/spread/general/extension-django/example_django/manage.py +++ b/tests/spread/rockcraft/extension-django/example_django/manage.py @@ -8,7 +8,9 @@ def main(): """Run administrative tasks.""" os.environ.setdefault("DJANGO_SETTINGS_MODULE", "example_django.settings") try: - from django.core.management import execute_from_command_line + from django.core.management import ( # pyright: ignore[reportMissingImports] + execute_from_command_line, + ) except ImportError as exc: raise ImportError( "Couldn't import Django. Are you sure it's installed and " diff --git a/tests/spread/general/extension-django/requirements.txt b/tests/spread/rockcraft/extension-django/requirements.txt similarity index 100% rename from tests/spread/general/extension-django/requirements.txt rename to tests/spread/rockcraft/extension-django/requirements.txt diff --git a/tests/spread/general/extension-django/task.yaml b/tests/spread/rockcraft/extension-django/task.yaml similarity index 88% rename from tests/spread/general/extension-django/task.yaml rename to tests/spread/rockcraft/extension-django/task.yaml index 1730d65e5..0258b352e 100644 --- a/tests/spread/general/extension-django/task.yaml +++ b/tests/spread/rockcraft/extension-django/task.yaml @@ -1,11 +1,16 @@ summary: django extension test environment: + SCENARIO/base_2204: ubuntu-22.04 + SCENARIO/base_2404: ubuntu-24.04 ROCKCRAFT_ENABLE_EXPERIMENTAL_EXTENSIONS: "true" execute: | run_rockcraft init --name example-django --profile django-framework + + sed -i "s/base: .*/base: ${SCENARIO//-/@}/g" rockcraft.yaml + run_rockcraft pack test -f example-django_0.1_amd64.rock @@ -34,3 +39,5 @@ restore: | rm -f example-django_0.1_amd64.rock docker rmi -f example-django docker rm -f example-django-container + rm -f "*.rock" rockcraft.yaml + docker system prune -a -f diff --git a/tests/spread/rockcraft/extension-flask/task.yaml b/tests/spread/rockcraft/extension-flask/task.yaml index 98a769b43..33af51d36 100644 --- a/tests/spread/rockcraft/extension-flask/task.yaml +++ b/tests/spread/rockcraft/extension-flask/task.yaml @@ -2,6 +2,7 @@ summary: flask extension test environment: SCENARIO/bare: bare SCENARIO/base_2204: ubuntu-22.04 + SCENARIO/base_2404: ubuntu-24.04 execute: | NAME="flask-${SCENARIO//./-}" ROCK_FILE="${NAME}_0.1_amd64.rock"