Update Docker configuration and Jenkinsfile for E2E testing
- Added .env.e2e.generated to .gitignore to prevent committing generated environment files. - Updated docker-compose.yml to use environment variables for Keycloak ports, enhancing flexibility in CI environments. - Enhanced Jenkinsfile to generate dynamic Keycloak ports for E2E testing and improved logging for troubleshooting during failures.
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -26,6 +26,7 @@ wheels/
|
||||
|
||||
# Environment (no subir: cada quien puede usar puertos distintos vía .env)
|
||||
.env
|
||||
.env.e2e.generated
|
||||
.env.local
|
||||
backend/.env
|
||||
frontend/.env
|
||||
|
||||
35
Jenkinsfile
vendored
35
Jenkinsfile
vendored
@@ -192,27 +192,48 @@ pipeline {
|
||||
export E2E_COMPOSE_PROJECT="anexo76-e2e-${BUILD_NUMBER}"
|
||||
export COMPOSE_PROJECT_NAME="${E2E_COMPOSE_PROJECT}"
|
||||
cd "$WORKSPACE"
|
||||
: "${BUILD_NUMBER:=0}"
|
||||
E2E_ENV_FILE="${WORKSPACE}/.env.e2e.generated"
|
||||
# Puertos (dash/sh en Jenkins, sin depender de $RANDOM): rango ~20000–60k
|
||||
T=$(date +%s 2>/dev/null || echo 0)
|
||||
r1=$((T % 20000))
|
||||
r2=$((T % 15000))
|
||||
KC_HTTP=$(( 20000 + r1 + BUILD_NUMBER % 2000 ))
|
||||
KC_MGMT=$(( 40000 + r2 + (BUILD_NUMBER * 7) % 2000 ))
|
||||
if [ "$KC_HTTP" -gt 64000 ] || [ "$KC_HTTP" -lt 20000 ]; then KC_HTTP=$(( 22000 + BUILD_NUMBER % 8000 )); fi
|
||||
if [ "$KC_MGMT" -gt 65000 ] || [ "$KC_MGMT" -lt 30000 ]; then KC_MGMT=$(( 50000 + BUILD_NUMBER % 8000 )); fi
|
||||
if [ "$KC_HTTP" -eq "$KC_MGMT" ]; then KC_MGMT=$((KC_MGMT + 1)); fi
|
||||
{ echo "KEYCLOAK_HTTP_PORT=$KC_HTTP"; echo "KEYCLOAK_MANAGEMENT_PORT=$KC_MGMT"; echo "VITE_KEYCLOAK_URL=http://127.0.0.1:$KC_HTTP/kcauth"; } > "$E2E_ENV_FILE"
|
||||
set -a
|
||||
. "$E2E_ENV_FILE"
|
||||
set +a
|
||||
echo "E2E: Keycloak (host) en puertos de .env e2e:" && cat "$E2E_ENV_FILE"
|
||||
|
||||
e2e_compose() {
|
||||
docker compose --env-file "$E2E_ENV_FILE" -f "$WORKSPACE/docker-compose.yml" "$@"
|
||||
}
|
||||
|
||||
compose_down() {
|
||||
export COMPOSE_PROJECT_NAME="${E2E_COMPOSE_PROJECT}"
|
||||
docker compose -f "$WORKSPACE/docker-compose.yml" down --remove-orphans 2>/dev/null || true
|
||||
e2e_compose down --remove-orphans 2>/dev/null || true
|
||||
}
|
||||
trap compose_down EXIT
|
||||
compose_down
|
||||
e2e_compose_fail_logs() {
|
||||
echo "== E2E: fallo al levantar stack; diagnóstico (revisa postgres-keycloak antes que keycloak) =="
|
||||
echo "== E2E: fallo al levantar stack; diagnóstico =="
|
||||
echo "--- .env.e2e.generated ---"
|
||||
cat "$E2E_ENV_FILE" 2>&1 || true
|
||||
export COMPOSE_PROJECT_NAME="${E2E_COMPOSE_PROJECT}"
|
||||
echo "--- docker compose ps -a ---"
|
||||
docker compose -f "$WORKSPACE/docker-compose.yml" ps -a 2>&1 || true
|
||||
e2e_compose ps -a 2>&1 || true
|
||||
echo "--- logs: anexo76-postgres-a76 (Postgres app) ---"
|
||||
docker logs --tail 250 anexo76-postgres-a76 2>&1 || true
|
||||
echo "--- logs: anexo76-postgres-keycloak (Postgres de Keycloak; el healthcheck que suele fallar) ---"
|
||||
echo "--- logs: anexo76-postgres-keycloak (Postgres de Keycloak) ---"
|
||||
docker logs --tail 400 anexo76-postgres-keycloak 2>&1 || true
|
||||
echo "--- logs: anexo76-keycloak (servidor Keycloak; a veces no alcanzó a crearse) ---"
|
||||
echo "--- logs: anexo76-keycloak (Keycloak) ---"
|
||||
docker logs --tail 250 anexo76-keycloak 2>&1 || true
|
||||
}
|
||||
# Stack completo (API, Keycloak, Vite) — puede tardar varios minutos la 1.ª vez
|
||||
if ! docker compose -f "$WORKSPACE/docker-compose.yml" up -d --build; then
|
||||
if ! e2e_compose up -d --build; then
|
||||
e2e_compose_fail_logs
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -107,9 +107,10 @@ services:
|
||||
- --http-enabled=true
|
||||
- --hostname-strict=false
|
||||
- --proxy-headers=xforwarded
|
||||
# Host: KEYCLOAK_HTTP_PORT / KEYCLOAK_MANAGEMENT_PORT (CI, Jenkins) para no chocar con 8080/9000
|
||||
ports:
|
||||
- "8080:8080"
|
||||
- "9000:9000"
|
||||
- "${KEYCLOAK_HTTP_PORT:-8080}:8080"
|
||||
- "${KEYCLOAK_MANAGEMENT_PORT:-9000}:9000"
|
||||
depends_on:
|
||||
postgres-keycloak:
|
||||
condition: service_healthy
|
||||
@@ -240,7 +241,7 @@ services:
|
||||
- NODE_ENV=${NODE_ENV:-development}
|
||||
- VITE_API_URL=${VITE_API_URL:-http://localhost:8000/api/}
|
||||
- INTERNAL_API_URL=${INTERNAL_API_URL:-http://backend:8000/api/}
|
||||
- VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-http://localhost:8080/kcauth}
|
||||
- VITE_KEYCLOAK_URL=${VITE_KEYCLOAK_URL:-http://localhost:${KEYCLOAK_HTTP_PORT:-8080}/kcauth}
|
||||
- VITE_KEYCLOAK_REALM=${VITE_KEYCLOAK_REALM:-master}
|
||||
- VITE_KEYCLOAK_CLIENT_ID=${VITE_KEYCLOAK_CLIENT_ID:-anexo76-frontend}
|
||||
- KEYCLOAK_URL=${KEYCLOAK_URL:-http://keycloak:8080/kcauth}
|
||||
|
||||
Reference in New Issue
Block a user