From 74af1a5f3657fe74c3f76b32f152e7e890e38000 Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Wed, 30 Sep 2026 16:45:38 +0200 Subject: [PATCH 1/3] Added __init__ for the migrations --- expenses_manager/expenses/migrations/__init__.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 expenses_manager/expenses/migrations/__init__.py diff --git a/expenses_manager/expenses/migrations/__init__.py b/expenses_manager/expenses/migrations/__init__.py new file mode 100644 index 0000000..e69de29 -- 2.45.2 From aa6f49097dd8b3940c7ecaf93314dc5da0592485 Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Wed, 30 Sep 2026 16:53:27 +0200 Subject: [PATCH 2/3] Removed __init__ from gitignore and added to the repo the __init__ files --- .gitignore | 1 - expenses_manager/expenses/__init__.py | 0 expenses_manager/expenses/tests/__init__.py | 0 expenses_manager/expenses_manager/__init__.py | 0 4 files changed, 1 deletion(-) create mode 100644 expenses_manager/expenses/__init__.py create mode 100644 expenses_manager/expenses/tests/__init__.py create mode 100644 expenses_manager/expenses_manager/__init__.py diff --git a/.gitignore b/.gitignore index 896191d..45878d3 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ __pycache__/ *.py[cod] *$py.class -__init__.py # C extensions *.so diff --git a/expenses_manager/expenses/__init__.py b/expenses_manager/expenses/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/expenses_manager/expenses/tests/__init__.py b/expenses_manager/expenses/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/expenses_manager/expenses_manager/__init__.py b/expenses_manager/expenses_manager/__init__.py new file mode 100644 index 0000000..e69de29 -- 2.45.2 From c122e14472f7148af33eeeca8ea87d1ae60ff66a Mon Sep 17 00:00:00 2001 From: JKuijperM Date: Wed, 30 Sep 2026 17:09:29 +0200 Subject: [PATCH 3/3] Updated Jenkinsfile --- expenses_manager/Jenkinsfile | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/expenses_manager/Jenkinsfile b/expenses_manager/Jenkinsfile index 2465935..84f266f 100644 --- a/expenses_manager/Jenkinsfile +++ b/expenses_manager/Jenkinsfile @@ -73,7 +73,7 @@ pipeline { // pytest died before collecting anything produces no XML, // and that must fail rather than pass quietly. junit allowEmptyResults: false, - testResults: 'expenses_manager/junit.xml' + testResults: 'expenses_manager/junit.xml' } } } @@ -92,7 +92,7 @@ pipeline { "rm -rf ${CI_DIR} && mkdir -p ${CI_DIR}" tar -czf - --exclude=./expenses_manager/venv \ - --exclude=./.git . \ + --exclude=./.git . \ | ssh ${SSH_OPTS} ${NAS_USER}@${NAS_HOST} \ "tar -xzf - -C ${CI_DIR}" @@ -119,6 +119,23 @@ pipeline { -e DB_ENGINE=sqlite3 \ ${IMAGE}:${SHA} python manage.py check" ''' + + // A migrations directory without __init__.py is a namespace + // package, and Django deliberately ignores those: the app then + // appears to have no migrations at all, migrate --check always + // reports nothing pending, and a real migration would silently + // never be applied. This is what .gitignore line 6 caused. + sh ''' + SHA=$(echo "${GIT_COMMIT}" | cut -c1-7) + ssh ${SSH_OPTS} ${NAS_USER}@${NAS_HOST} \ + "sudo ${NAS_DOCKER} run --rm \ + -e SECRET_KEY=smoke-test-only \ + -e DEBUG=False \ + -e ALLOWED_HOSTS=localhost \ + -e DB_ENGINE=sqlite3 \ + ${IMAGE}:${SHA} python manage.py showmigrations expenses" \ + | grep -q '0001_initial' + ''' } } } -- 2.45.2