diff --git a/Jenkinsfile b/Jenkinsfile index ab2a87b4..c16620cc 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -58,21 +58,26 @@ pipeline { DB_USER="anexo76" DB_PASS="anexo76" DB_PORT="55432" - export TEST_DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@127.0.0.1:${DB_PORT}/${DB_NAME}" + export TEST_DATABASE_URL="postgresql://${DB_USER}:${DB_PASS}@${DB_CONTAINER}:5432/${DB_NAME}" PY_CONTAINER="anexo76-test-py-${BUILD_NUMBER}" + TEST_NETWORK="anexo76-test-net-${BUILD_NUMBER}" cleanup() { docker rm -f "$PY_CONTAINER" >/dev/null 2>&1 || true docker rm -f "$DB_CONTAINER" >/dev/null 2>&1 || true + docker network rm "$TEST_NETWORK" >/dev/null 2>&1 || true } trap cleanup EXIT + docker network rm "$TEST_NETWORK" >/dev/null 2>&1 || true + docker network create "$TEST_NETWORK" + docker rm -f "$DB_CONTAINER" >/dev/null 2>&1 || true docker run -d --name "$DB_CONTAINER" \ + --network "$TEST_NETWORK" \ -e POSTGRES_DB="$DB_NAME" \ -e POSTGRES_USER="$DB_USER" \ -e POSTGRES_PASSWORD="$DB_PASS" \ - -p "${DB_PORT}:5432" \ postgres:16-alpine # Espera a que Postgres acepte conexiones @@ -84,40 +89,30 @@ pipeline { done docker exec "$DB_CONTAINER" pg_isready -U "$DB_USER" -d "$DB_NAME" - docker run --name "$PY_CONTAINER" --rm \ - --network host \ + docker rm -f "$PY_CONTAINER" >/dev/null 2>&1 || true + docker run -d --name "$PY_CONTAINER" --network "$TEST_NETWORK" python:3.12-slim sleep infinity + docker exec "$PY_CONTAINER" mkdir -p /workspace + docker cp "$WORKSPACE/." "$PY_CONTAINER:/workspace" + + docker exec \ -e TEST_DATABASE_URL="$TEST_DATABASE_URL" \ - -v "$WORKSPACE:/workspace" \ - -w /workspace \ - python:3.12-slim \ + "$PY_CONTAINER" \ sh -lc ' set -euxo pipefail python --version python -m pip install --upgrade pip - REPO_ROOT="" - for d in /workspace /workspace/*; do - if [ -d "$d/backend" ]; then - REPO_ROOT="$d" - break - fi - done - if [ -z "$REPO_ROOT" ]; then - echo "ERROR: Could not locate repository root containing backend/ directory" - ls -la /workspace || true - exit 1 - fi - echo "Detected REPO_ROOT=$REPO_ROOT" - if [ -f "$REPO_ROOT/backend/requirements.txt" ]; then - pip install -r "$REPO_ROOT/backend/requirements.txt" - elif [ -f "$REPO_ROOT/backend/requirements/base.txt" ]; then - pip install -r "$REPO_ROOT/backend/requirements/base.txt" + if [ -f /workspace/backend/requirements.txt ]; then + pip install -r /workspace/backend/requirements.txt + elif [ -f /workspace/backend/requirements/base.txt ]; then + pip install -r /workspace/backend/requirements/base.txt else - echo "ERROR: No requirements file found in $REPO_ROOT/backend" - ls -la "$REPO_ROOT/backend" || true - ls -la "$REPO_ROOT/backend/requirements" || true + echo "ERROR: No requirements file found in /workspace/backend" + ls -la /workspace || true + ls -la /workspace/backend || true + ls -la /workspace/backend/requirements || true exit 1 fi - cd "$REPO_ROOT/backend" + cd /workspace/backend alembic upgrade head pytest -q tests -v -ra -s '