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' + ''' } } }