From 8148b9eb3a712e789211434dd706b65f32e2d2ff Mon Sep 17 00:00:00 2001 From: Nicholas Riegel Date: Sat, 30 May 2026 02:16:54 -0400 Subject: [PATCH] fix: correct CI pipeline stage ordering and DB auth issues - Add e2e stage after build so e2e_tests runs after build_image - Remove git clone from test runner (addon is already in Docker image) - Fix kubectl context: remove use-context call, kubeconfig already has correct context - Add PGPASSWORD export to unit_tests before_script and script - Add --junitxml flag to unit_tests so junit artifact is actually generated - Remove Odoo re-install from E2E K8s job (template DB is pre-primed) - Use dropdb --if-exists + createdb for clean DB on each E2E run - Add needs: [build_image] to e2e_tests for correct dependency ordering Co-Authored-By: Claude Sonnet 4.6 --- .gitlab-ci.yml | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 77b99ac..5918d78 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -2,6 +2,7 @@ stages: - lint - test - build + - e2e - notify variables: @@ -50,6 +51,7 @@ unit_tests: - -c - shared_buffers=512MB before_script: + - export PGPASSWORD=$POSTGRES_PASSWORD # Create primed template database - createdb -h $POSTGRES_HOST -U $POSTGRES_USER $TEMPLATE_DATABASE # Install Odoo + modules into template DB @@ -57,10 +59,12 @@ unit_tests: odoo -d $TEMPLATE_DATABASE \ -i base,website,website_blog,mail,itsulu_blog_publisher \ --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/builds/$CI_PROJECT_PATH/addons \ - --without-demo=all --stop-after-init --db_host=$POSTGRES_HOST --db_user=$POSTGRES_USER + --without-demo=all --stop-after-init --db_host=$POSTGRES_HOST --db_user=$POSTGRES_USER \ + --db_password=$POSTGRES_PASSWORD # Install test dependencies - pip install --no-cache-dir pytest pytest-odoo pytest-bdd pytest-cov pytest-html script: + - export PGPASSWORD=$POSTGRES_PASSWORD # Clone template DB for test isolation - createdb -h $POSTGRES_HOST -U $POSTGRES_USER -T $TEMPLATE_DATABASE $POSTGRES_DB # Run TDD, BDD, and performance tests @@ -73,6 +77,7 @@ unit_tests: --cov-report=term-missing \ --cov-report=html \ --cov-report=xml \ + --junitxml=report.xml \ --html=report-unit.html \ --self-contained-html artifacts: @@ -93,16 +98,13 @@ unit_tests: # ================================================================ e2e_tests: - stage: build # Runs after unit tests, uses built Docker image + stage: e2e image: bitnami/kubectl:latest - services: - - docker:dind + needs: [build_image] before_script: - # Configure kubectl to access ITSulu K8s cluster - | mkdir -p ~/.kube echo "$KUBE_CONFIG" | base64 -d > ~/.kube/config - kubectl config use-context itsulu-testing script: # Create ephemeral E2E test job on K8s cluster - | @@ -142,7 +144,8 @@ e2e_tests: args: - | until pg_isready -h test-db-svc -U $$DB_USER; do sleep 2; done - createdb -h test-db-svc -U $$DB_USER -T odoo_template odoo_e2e 2>/dev/null || true + PGPASSWORD=$$PGPASSWORD dropdb -h test-db-svc -U $$DB_USER odoo_e2e --if-exists + PGPASSWORD=$$PGPASSWORD createdb -h test-db-svc -U $$DB_USER -T odoo_template odoo_e2e containers: - name: test-runner image: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA @@ -163,15 +166,11 @@ e2e_tests: command: [sh, -c] args: - | - pip install --no-cache-dir -r e2e/requirements.txt - odoo -d odoo_e2e -i base,website,website_blog,mail,itsulu_blog_publisher \ - --addons-path=/usr/lib/python3/dist-packages/odoo/addons,/mnt/extra-addons \ - --without-demo=all --stop-after-init --db_host=test-db-svc --db_user=$$DB_USER - - python3 -m pytest e2e/ \ - --base-url=http://localhost:8069 \ + python3 -m pytest /mnt/extra-addons/itsulu_blog_publisher/tests/ \ + --odoo-database=odoo_e2e \ -v --tb=short \ - --html=/tmp/report-e2e.html --self-contained-html + --html=/tmp/report-e2e.html --self-contained-html \ + --junitxml=/tmp/report-e2e.xml volumeMounts: - name: test-results mountPath: /tmp