Enhance backend testing in Jenkinsfile by adding Docker container setup for PostgreSQL, improving error handling, and updating environment variable management.

This commit is contained in:
2026-03-31 18:19:48 -05:00
parent 0d249b526c
commit d84d081f3e

38
Jenkinsfile vendored
View File

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