From 1790838a44fa2daa57c3e5a0e17920ab7bb808c3 Mon Sep 17 00:00:00 2001 From: AlexeerCT Date: Thu, 2 Apr 2026 10:13:15 -0500 Subject: [PATCH] Update Jenkinsfile to use Docker networks for test containers. Changed database connection URL to reference the container name and added cleanup for the test network. Improved handling of workspace paths for dependency installation. --- Jenkinsfile | 51 +++++++++++++++++++++++---------------------------- 1 file changed, 23 insertions(+), 28 deletions(-) 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 '