From 920b475b1146af1e4b4f1c1e46981a89dacb79b9 Mon Sep 17 00:00:00 2001 From: Yera All Date: Sat, 4 Apr 2026 02:09:52 +0500 Subject: [PATCH] Fix GitLab CI for available shell runner --- .gitlab-ci.yml | 65 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 46 insertions(+), 19 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index e1469ea..02d08c6 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -15,6 +15,8 @@ variables: DOCKER_HOST: "tcp://docker:2376" DOCKER_TLS_VERIFY: "1" DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client" + PYTHON_BIN: "python3" + CI_POSTGRES_ADMIN_URL: "" default: cache: @@ -22,34 +24,28 @@ default: - .cache/pip .python_job: - image: python:3.11-slim + tags: + - crm-shell before_script: - - python -m pip install --upgrade pip - - pip install -r requirements.txt + - $PYTHON_BIN -m pip install --upgrade pip + - $PYTHON_BIN -m pip install -r requirements.txt test: extends: .python_job stage: test script: - - pytest -q + - $PYTHON_BIN -m pytest -q postgres-readiness: extends: .python_job stage: test - services: - - name: postgres:16-alpine - alias: postgres - - name: rabbitmq:3-management - alias: rabbitmq + rules: + - if: '$ENABLE_POSTGRES_READINESS == "1" && $CI_POSTGRES_ADMIN_URL' + - when: never variables: - POSTGRES_DB: mvpcc - POSTGRES_USER: mvp - POSTGRES_PASSWORD: mvp - DATABASE_URL: postgresql://mvp:mvp@postgres:5432/mvpcc SCHEMA_MANAGEMENT_MODE: migrations CC_DATA_DIR: .testdata_pg EVENT_BUS_ENABLED: "0" - EVENT_BUS_URL: amqp://guest:guest@rabbitmq:5672/ APP_TOKEN_SECRET: ci-secret ALLOW_LEGACY_HEADER_AUTH: "1" TELEGRAM_BOT_ENABLED: "0" @@ -59,8 +55,37 @@ postgres-readiness: AI_WHATSAPP_ENABLED: "0" AI_VOICE_ENABLED: "0" script: - - python scripts/migrate_core_db.py - - pytest -q tests/test_postgres_readiness.py + - | + export CI_PG_DB="mvpcc_ci_${CI_PIPELINE_IID}_${CI_JOB_ID}" + $PYTHON_BIN - <<'PY' + import os + import psycopg + + admin_url = os.environ["CI_POSTGRES_ADMIN_URL"] + db_name = os.environ["CI_PG_DB"] + + with psycopg.connect(admin_url, autocommit=True) as conn: + with conn.cursor() as cur: + cur.execute(f'DROP DATABASE IF EXISTS "{db_name}" WITH (FORCE)') + cur.execute(f'CREATE DATABASE "{db_name}"') + PY + - export DATABASE_URL="postgresql://postgres@127.0.0.1:5433/${CI_PG_DB}" + - $PYTHON_BIN scripts/migrate_core_db.py + - $PYTHON_BIN -m pytest -q tests/test_postgres_readiness.py + after_script: + - | + export CI_PG_DB="mvpcc_ci_${CI_PIPELINE_IID}_${CI_JOB_ID}" + $PYTHON_BIN - <<'PY' + import os + import psycopg + + admin_url = os.environ["CI_POSTGRES_ADMIN_URL"] + db_name = os.environ["CI_PG_DB"] + + with psycopg.connect(admin_url, autocommit=True) as conn: + with conn.cursor() as cur: + cur.execute(f'DROP DATABASE IF EXISTS "{db_name}" WITH (FORCE)') + PY .docker_build: image: docker:27 @@ -70,8 +95,9 @@ postgres-readiness: before_script: - echo "$CI_REGISTRY_PASSWORD" | docker login "$CI_REGISTRY" -u "$CI_REGISTRY_USER" --password-stdin rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' - - if: '$CI_COMMIT_TAG' + - if: '$ENABLE_REGISTRY_BUILD == "1" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + - if: '$ENABLE_REGISTRY_BUILD == "1" && $CI_COMMIT_TAG' + - when: never build-app-image: extends: .docker_build @@ -149,6 +175,7 @@ deploy-production: docker compose --env-file .env.images -f docker-compose.asterisk.server.registry.yml pull && \ docker compose --env-file .env.images -f docker-compose.asterisk.server.registry.yml up -d" rules: - - if: '$CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + - if: '$ENABLE_REGISTRY_BUILD == "1" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' when: manual + - when: never allow_failure: false