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:
38
Jenkinsfile
vendored
38
Jenkinsfile
vendored
@@ -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
|
||||
'''
|
||||
|
||||
Reference in New Issue
Block a user