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.

This commit is contained in:
2026-04-02 10:13:15 -05:00
parent 65030361cf
commit 1790838a44

51
Jenkinsfile vendored
View File

@@ -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
'