From 1237902d5584ad2c791ff832a5663c5dce34ef5a Mon Sep 17 00:00:00 2001 From: zwitschi Date: Sat, 25 Oct 2025 15:57:03 +0200 Subject: [PATCH] feat: Add wait step for database service availability in CI workflow --- .gitea/workflows/test.yml | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index 01eacb5..18154ed 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -36,6 +36,42 @@ jobs: run: | pip install -r requirements.txt pip install -r requirements-test.txt + - name: Wait for database service + env: + DATABASE_DRIVER: postgresql + DATABASE_HOST: 127.0.0.1 + DATABASE_PORT: "5432" + DATABASE_NAME: calminer_ci + DATABASE_USER: calminer + DATABASE_PASSWORD: secret + DATABASE_SCHEMA: public + DATABASE_SUPERUSER: calminer + DATABASE_SUPERUSER_PASSWORD: secret + DATABASE_SUPERUSER_DB: calminer_ci + run: | + python - <<'PY' + import os + import time + + import psycopg2 + + dsn = ( + f"dbname={os.environ['DATABASE_SUPERUSER_DB']} " + f"user={os.environ['DATABASE_SUPERUSER']} " + f"password={os.environ['DATABASE_SUPERUSER_PASSWORD']} " + f"host={os.environ['DATABASE_HOST']} " + f"port={os.environ['DATABASE_PORT']}" + ) + + for attempt in range(30): + try: + with psycopg2.connect(dsn): + break + except psycopg2.OperationalError: + time.sleep(2) + else: + raise SystemExit("Postgres service did not become available") + PY - name: Run database setup (dry run) env: DATABASE_DRIVER: postgresql