Compare commits
34
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0be2b5cc52 | ||
|
|
5b4ad0f070 | ||
|
|
b1d897a3c8 | ||
|
|
f6c853068f | ||
|
|
19e969eb09 | ||
|
|
e933218443 | ||
|
|
c994cbe155 | ||
|
|
c778dea9a0 | ||
|
|
2720a2193d | ||
|
|
e1d797eb01 | ||
|
|
c06abb1d17 | ||
|
|
0a56944daa | ||
|
|
292c2bb8ec | ||
|
|
a991fd9f35 | ||
|
|
5fb6356f8a | ||
|
|
9990bba799 | ||
|
|
494fcfbf8a | ||
|
|
5e7e5c461c | ||
|
|
63bc5da40c | ||
|
|
a4c852d254 | ||
|
|
815eb72834 | ||
|
|
881a81f53b | ||
|
|
747cf1a0fa | ||
|
|
2472407cca | ||
|
|
02f9674b7a | ||
|
|
0963e25cfb | ||
|
|
8c8df282a4 | ||
|
|
41f8b67602 | ||
|
|
47b27d3cfd | ||
|
|
272a4ad8e2 | ||
|
|
deba5fafea | ||
|
|
0a56d83e2e | ||
|
|
eaa54b767b | ||
|
|
21aabb778a |
Vendored
+2
-1
@@ -1,3 +1,4 @@
|
|||||||
{
|
{
|
||||||
"java.compile.nullAnalysis.mode": "automatic"
|
"java.compile.nullAnalysis.mode": "automatic",
|
||||||
|
"java.configuration.updateBuildConfiguration": "interactive"
|
||||||
}
|
}
|
||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>as-talange-parent</artifactId>
|
<artifactId>as-talange-parent</artifactId>
|
||||||
<groupId>com.astalange</groupId>
|
<groupId>com.astalange</groupId>
|
||||||
<version>1.9-SNAPSHOT</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>as-talange-parent</artifactId>
|
<artifactId>as-talange-parent</artifactId>
|
||||||
<groupId>com.astalange</groupId>
|
<groupId>com.astalange</groupId>
|
||||||
<version>1.9-SNAPSHOT</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
<parent>
|
<parent>
|
||||||
<artifactId>as-talange-parent</artifactId>
|
<artifactId>as-talange-parent</artifactId>
|
||||||
<groupId>com.astalange</groupId>
|
<groupId>com.astalange</groupId>
|
||||||
<version>1.9-SNAPSHOT</version>
|
<version>1.8</version>
|
||||||
</parent>
|
</parent>
|
||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
<groupId>com.astalange</groupId>
|
<groupId>com.astalange</groupId>
|
||||||
<artifactId>as-talange-parent</artifactId>
|
<artifactId>as-talange-parent</artifactId>
|
||||||
<version>1.9-SNAPSHOT</version>
|
<version>1.8</version>
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<name>as-talange-parent</name>
|
<name>as-talange-parent</name>
|
||||||
|
|||||||
+96
-6
@@ -31,6 +31,14 @@ DB_HOST="${POSTGRES_HOST:-localhost}"
|
|||||||
DB_PORT="${POSTGRES_PORT:-5432}"
|
DB_PORT="${POSTGRES_PORT:-5432}"
|
||||||
CONTAINER_NAME="${DOCKER_CONTAINER_NAME:-astalange_db}"
|
CONTAINER_NAME="${DOCKER_CONTAINER_NAME:-astalange_db}"
|
||||||
|
|
||||||
|
# Variables UAT
|
||||||
|
ENABLE_UAT_RESTORE="${ENABLE_UAT_RESTORE:-true}"
|
||||||
|
UAT_DB_HOST="${UAT_DB_HOST:-10.8.0.2}"
|
||||||
|
UAT_DB_PORT="${UAT_DB_PORT:-5433}"
|
||||||
|
UAT_DB_NAME="${UAT_DB_NAME:-astalange}"
|
||||||
|
UAT_DB_USER="${UAT_DB_USER:-myuser}"
|
||||||
|
UAT_DB_PASSWORD="${UAT_DB_PASSWORD:-mypassword}"
|
||||||
|
|
||||||
# Configuration du transfert distant vers le VPS (optionnel)
|
# Configuration du transfert distant vers le VPS (optionnel)
|
||||||
ENABLE_REMOTE_COPY="${ENABLE_REMOTE_COPY:-false}"
|
ENABLE_REMOTE_COPY="${ENABLE_REMOTE_COPY:-false}"
|
||||||
REMOTE_HOST="${REMOTE_HOST:-}"
|
REMOTE_HOST="${REMOTE_HOST:-}"
|
||||||
@@ -80,24 +88,106 @@ if [ "$STATUS" = "SUCCESS" ]; then
|
|||||||
# Vérification si le conteneur Docker est actif
|
# Vérification si le conteneur Docker est actif
|
||||||
if command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
if command -v docker >/dev/null 2>&1 && docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
||||||
log "Mode détection: Conteneur Docker '${CONTAINER_NAME}' trouvé. Utilisation de pg_dump via docker exec."
|
log "Mode détection: Conteneur Docker '${CONTAINER_NAME}' trouvé. Utilisation de pg_dump via docker exec."
|
||||||
docker exec -e PGPASSWORD="${DB_PASSWORD}" "${CONTAINER_NAME}" pg_dump -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
docker exec -e PGPASSWORD="${DB_PASSWORD}" "${CONTAINER_NAME}" pg_dump --no-owner --no-privileges -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
||||||
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
||||||
else
|
else
|
||||||
log "Mode détection: Exécution directe de pg_dump (hôte local)."
|
log "Mode détection: Exécution directe de pg_dump (hôte local)."
|
||||||
PGPASSWORD="${DB_PASSWORD}" pg_dump -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
PGPASSWORD="${DB_PASSWORD}" pg_dump --no-owner --no-privileges -h "${DB_HOST}" -p "${DB_PORT}" -U "${DB_USER}" -d "${DB_NAME}" | gzip > "$DUMP_PATH" 2>> "$LOG_FILE"
|
||||||
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
DUMP_EXIT_CODE=${PIPESTATUS[0]}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ${DUMP_EXIT_CODE} -eq 0 ] && [ -s "$DUMP_PATH" ]; then
|
if [ ${DUMP_EXIT_CODE} -eq 0 ] || [ ${DUMP_EXIT_CODE} -eq 141 ]; then
|
||||||
DUMP_SIZE=$(du -h "$DUMP_PATH" | cut -f1)
|
if [ -s "$DUMP_PATH" ]; then
|
||||||
log "✅ Dump généré avec succès ! Taille du fichier : ${DUMP_SIZE}"
|
DUMP_SIZE=$(du -h "$DUMP_PATH" | cut -f1)
|
||||||
else
|
log "✅ Dump généré avec succès ! Taille du fichier : ${DUMP_SIZE}"
|
||||||
|
DUMP_EXIT_CODE=0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ${DUMP_EXIT_CODE} -ne 0 ]; then
|
||||||
log "❌ ERREUR lors de l'extraction de la base de données (code de sortie: ${DUMP_EXIT_CODE})."
|
log "❌ ERREUR lors de l'extraction de la base de données (code de sortie: ${DUMP_EXIT_CODE})."
|
||||||
STATUS="FAILURE"
|
STATUS="FAILURE"
|
||||||
rm -f "$DUMP_PATH"
|
rm -f "$DUMP_PATH"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 2b. Restauration et Anonymisation vers la BDD UAT (10.8.0.2)
|
||||||
|
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_UAT_RESTORE" = "true" ]; then
|
||||||
|
log "Démarrage de la restauration et l'anonymisation sur UAT (${UAT_DB_USER}@${UAT_DB_HOST}:${UAT_DB_PORT}/${UAT_DB_NAME})..."
|
||||||
|
|
||||||
|
CLEAN_SCHEMA_SQL="
|
||||||
|
DO \$\$ DECLARE r RECORD; BEGIN FOR r IN (SELECT oid FROM pg_largeobject_metadata) LOOP PERFORM lo_unlink(r.oid); END LOOP; EXCEPTION WHEN OTHERS THEN NULL; END \$\$;
|
||||||
|
DROP SCHEMA IF EXISTS public CASCADE;
|
||||||
|
CREATE SCHEMA public;
|
||||||
|
GRANT ALL ON SCHEMA public TO ${UAT_DB_USER};
|
||||||
|
GRANT ALL ON SCHEMA public TO public;
|
||||||
|
"
|
||||||
|
|
||||||
|
ANONYMIZE_SQL="
|
||||||
|
UPDATE adherent SET
|
||||||
|
nom = 'Nom_Adherent_' || id,
|
||||||
|
prenom = 'Prenom_Adherent_' || id,
|
||||||
|
email = 'adherent' || id || '@test.local',
|
||||||
|
telephone = '06' || LPAD((id)::text, 8, '0'),
|
||||||
|
lieu_naissance_ville = 'Ville_' || id,
|
||||||
|
representant_legal = CASE
|
||||||
|
WHEN representant_legal IS NOT NULL AND TRIM(representant_legal) <> ''
|
||||||
|
THEN 'Representant_' || id
|
||||||
|
ELSE representant_legal
|
||||||
|
END;
|
||||||
|
|
||||||
|
UPDATE pre_inscription SET
|
||||||
|
nom = 'Nom_PreInscr_' || id,
|
||||||
|
prenom = 'Prenom_PreInscr_' || id,
|
||||||
|
email = 'preinscr' || id || '@test.local',
|
||||||
|
telephone = '06' || LPAD((id)::text, 8, '0'),
|
||||||
|
lieu_naissance_ville = 'Ville_' || id,
|
||||||
|
representant_legal = CASE
|
||||||
|
WHEN representant_legal IS NOT NULL AND TRIM(representant_legal) <> ''
|
||||||
|
THEN 'Representant_PreInscr_' || id
|
||||||
|
ELSE representant_legal
|
||||||
|
END;
|
||||||
|
|
||||||
|
UPDATE educateur SET
|
||||||
|
nom = 'Nom_Educ_' || id,
|
||||||
|
prenom = 'Prenom_Educ_' || id,
|
||||||
|
email = 'educ' || id || '@test.local',
|
||||||
|
telephone = '06' || LPAD((id)::text, 8, '0');
|
||||||
|
"
|
||||||
|
|
||||||
|
RESTORE_SUCCESS=false
|
||||||
|
|
||||||
|
if command -v psql >/dev/null 2>&1; then
|
||||||
|
log "Réinitialisation du schéma public sur UAT..."
|
||||||
|
PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$CLEAN_SCHEMA_SQL" >> "$LOG_FILE" 2>&1
|
||||||
|
|
||||||
|
log "Restauration du dump Prod vers UAT..."
|
||||||
|
if gunzip -c "$DUMP_PATH" | PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
||||||
|
log "Exécution des requêtes d'anonymisation sur UAT..."
|
||||||
|
if PGPASSWORD="${UAT_DB_PASSWORD}" psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
||||||
|
RESTORE_SUCCESS=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
elif command -v docker >/dev/null 2>&1; then
|
||||||
|
log "Réinitialisation du schéma public sur UAT via Docker..."
|
||||||
|
docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$CLEAN_SCHEMA_SQL" >> "$LOG_FILE" 2>&1
|
||||||
|
|
||||||
|
log "Restauration du dump Prod vers UAT via Docker..."
|
||||||
|
if gunzip -c "$DUMP_PATH" | docker run --rm -i --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" >> "$LOG_FILE" 2>&1; then
|
||||||
|
log "Exécution des requêtes d'anonymisation sur UAT via Docker..."
|
||||||
|
if docker run --rm --net=host -e PGPASSWORD="${UAT_DB_PASSWORD}" postgres:15-alpine psql -h "${UAT_DB_HOST}" -p "${UAT_DB_PORT}" -U "${UAT_DB_USER}" -d "${UAT_DB_NAME}" -c "$ANONYMIZE_SQL" >> "$LOG_FILE" 2>&1; then
|
||||||
|
RESTORE_SUCCESS=true
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ "$RESTORE_SUCCESS" = "true" ]; then
|
||||||
|
log "✅ Restauration et anonymisation UAT réussies avec succès !"
|
||||||
|
else
|
||||||
|
log "⚠️ AVERTISSEMENT: Impossible d'effectuer la restauration/anonymisation UAT."
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# 3. Transfert sécurisé RSYNC / SCP vers le serveur VPS (Optionnel)
|
# 3. Transfert sécurisé RSYNC / SCP vers le serveur VPS (Optionnel)
|
||||||
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_REMOTE_COPY" = "true" ] && [ -n "$REMOTE_HOST" ]; then
|
if [ "$STATUS" = "SUCCESS" ] && [ "$ENABLE_REMOTE_COPY" = "true" ] && [ -n "$REMOTE_HOST" ]; then
|
||||||
log "Transfert du dump vers le serveur VPS distant (${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_BACKUP_DIR})..."
|
log "Transfert du dump vers le serveur VPS distant (${REMOTE_USER}@${REMOTE_HOST}:${REMOTE_BACKUP_DIR})..."
|
||||||
|
|||||||
Reference in New Issue
Block a user