From 542b05d541d5ea72426fa2377dce4b6fc59c19c7 Mon Sep 17 00:00:00 2001 From: ribardej Date: Wed, 29 Oct 2025 14:11:43 +0100 Subject: [PATCH] fix(tests): fixed testing DB deployment v3 --- .github/workflows/run-tests.yml | 35 +++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 0183ae3..543106a 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -22,36 +22,33 @@ jobs: build-and-test: runs-on: ubuntu-latest - # 1) Start a MariaDB service container for tests services: - # The label 'mariadb' becomes the hostname mariadb: image: mariadb:11.4 env: MARIADB_ROOT_PASSWORD: rootpw - # This DB name now matches what your app expects - MARIADB_DATABASE: group_project + MARIADB_DATABASE: group_project # Using the DB name your app expects MARIADB_USER: appuser MARIADB_PASSWORD: apppass - # 'ports' and 'options' are removed. - # GitHub Actions will use the image's default healthcheck. + # ADD THIS BLOCK BACK IN + # This forces the job to wait until the DB is + # actually responding before continuing. + options: >- + --health-cmd="mysqladmin ping -h 127.0.0.1 -u root -prootpw --silent" + --health-interval=5s + --health-timeout=2s + --health-retries=20 - # 2) Expose DB connection settings to steps + # This is the job-level 'env' block + # It will be used by the 'alembic' step env: - # Use the service label 'mariadb' as the host - MARIADB_HOST: mariadb - MARIADB_PORT: "3306" # This is the internal port, which is correct - # Match the database name from the service + MARIADB_HOST: mariadb # Use the service label as the host + MARIADB_PORT: "3306" MARIADB_DB: group_project MARIADB_USER: appuser MARIADB_PASSWORD: apppass - # ----------------- - # ----- Steps ----- - # ----------------- steps: - # ... (your steps remain the same) ... - - name: Check out repository code uses: actions/checkout@v4 @@ -65,15 +62,19 @@ jobs: python -m pip install --upgrade pip pip install -r requirements.txt + # This step will now wait for the healthcheck to pass + # and will use the job-level 'env' block - name: Run Alembic migrations run: | alembic upgrade head working-directory: ./7project/backend + # This step-level 'env' block overrides any local .env + # file that your pytest setup might be loading - name: Run tests with pytest env: MARIADB_HOST: mariadb - MARIADB_DB: group_project # Make sure this matches the service DB + MARIADB_DB: group_project MARIADB_USER: appuser MARIADB_PASSWORD: apppass run: pytest