From d84d081f3e8b5ef1173e9f7969fa8952ca066a1d Mon Sep 17 00:00:00 2001 From: AlexeerCT Date: Tue, 31 Mar 2026 18:19:48 -0500 Subject: [PATCH] Enhance backend testing in Jenkinsfile by adding Docker container setup for PostgreSQL, improving error handling, and updating environment variable management. --- Jenkinsfile | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) diff --git a/Jenkinsfile b/Jenkinsfile index 06ea3e89..924a260d 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -32,13 +32,42 @@ pipeline { } stage('Test backend') { - environment { - TEST_DATABASE_URL = credentials('test-database-url') - } steps { sh ''' - set -euo pipefail + set -euxo pipefail + echo "== Test backend stage started ==" + echo "Workspace: $WORKSPACE" python3 --version + docker --version + + DB_CONTAINER="anexo76-test-db-${BUILD_NUMBER}" + DB_NAME="anexo76_test" + 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}" + + cleanup() { + docker rm -f "$DB_CONTAINER" >/dev/null 2>&1 || true + } + trap cleanup EXIT + + docker rm -f "$DB_CONTAINER" >/dev/null 2>&1 || true + docker run -d --name "$DB_CONTAINER" \ + -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 + for i in $(seq 1 30); do + if docker exec "$DB_CONTAINER" pg_isready -U "$DB_USER" -d "$DB_NAME" >/dev/null 2>&1; then + break + fi + sleep 2 + done + docker exec "$DB_CONTAINER" pg_isready -U "$DB_USER" -d "$DB_NAME" VENV="$WORKSPACE/.pytest-venv" python3 -m venv "$VENV" @@ -48,7 +77,6 @@ pipeline { pip install -r "$WORKSPACE/backend/requirements.txt" cd "$WORKSPACE/backend" - export TEST_DATABASE_URL alembic upgrade head pytest -q tests -v -ra -s '''