mirror of
https://github.com/IliesAllali/parenthese.git
synced 2026-11-06 23:32:08 +00:00
fix(ci): le controle de restauration cree ses propres donnees
Le test de fumee supprime son arbre a la fin : le controle partait d'une base sans arbre. Il cree maintenant un compte, un arbre et une personne par l'API. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
217d503e20
commit
6fa86d6716
2 files changed
+18
-5
No files matched your search
@@ -186,7 +186,7 @@ jobs:
|
||||
- name: Sauvegarde puis restauration
|
||||
run: |
|
||||
set -euo pipefail
|
||||
bash tools/docker-restore-check.sh
|
||||
bash tools/docker-restore-check.sh http://localhost:8080
|
||||
bash tools/docker-smoke.sh http://localhost:8080
|
||||
|
||||
# Un second front qui joint l'API par le nom de son conteneur (API_UPSTREAM), comme sur Umbrel.
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
# Sauvegarde puis restauration d'une installation compose avec les commandes du README, et contrôle
|
||||
# que rien ne s'est perdu : comptes, arbres, personnes, migrations et fichiers des médias.
|
||||
#
|
||||
# Usage : bash tools/docker-restore-check.sh (depuis le dossier du dépôt, installation démarrée)
|
||||
# La CI le lance après le test de fumée, qui a déjà créé un compte et un arbre.
|
||||
# Usage : bash tools/docker-restore-check.sh [http://localhost:8080] (depuis le dossier du dépôt, installation démarrée)
|
||||
# Nécessite curl et jq. La CI le lance après le test de fumée.
|
||||
# Attention : la base et les médias sont effacés puis restaurés. Jamais sur une installation en service.
|
||||
set -euo pipefail
|
||||
|
||||
cd "$(dirname "$0")/.."
|
||||
BASE_URL="${1:-http://localhost}"
|
||||
BASE_URL="${BASE_URL%/}"
|
||||
DB_USER="${POSTGRES_USER:-parenthese}"
|
||||
DB_NAME="${POSTGRES_DB:-parenthese}"
|
||||
MEDIA_VOLUME="parenthese_media"
|
||||
@@ -18,10 +20,21 @@ fail() { echo "ÉCHEC : $*" >&2; exit 1; }
|
||||
sql() { docker compose exec -T db psql -U "$DB_USER" -d "$DB_NAME" -v ON_ERROR_STOP=1 -At -c "$1"; }
|
||||
counts() { sql "SELECT (SELECT count(*) FROM users) || ' ' || (SELECT count(*) FROM trees) || ' ' || (SELECT count(*) FROM persons) || ' ' || (SELECT count(*) FROM _prisma_migrations)"; }
|
||||
|
||||
# Données à retrouver : un compte, un arbre et une personne créés par l'API, un fichier dans les médias
|
||||
api() {
|
||||
local method="$1" path="$2" body="$3" token="${4:-}"
|
||||
curl -fsS --max-time 30 -X "$method" "$BASE_URL$path" -H 'Content-Type: application/json' \
|
||||
${token:+-H "Authorization: Bearer $token"} --data "$body"
|
||||
}
|
||||
stamp="$(date +%s)-$RANDOM"
|
||||
token="$(api POST /auth/register "$(jq -nc --arg e "restore-$stamp@example.com" '{firstName: "Test", email: $e, password: "restauration-test-1"}')" | jq -r .token)"
|
||||
tree_id="$(api POST /trees "$(jq -nc --arg s "restore-$stamp" '{name: "Arbre de restauration", slug: $s, visitorPassword: "visiteur-test-1", contributorPassword: "contributeur-test-1"}')" "$token" | jq -r .tree.id)"
|
||||
api POST "/trees/$tree_id/persons" '{"firstName": "Jeanne", "lastName": "Test"}' "$token" >/dev/null
|
||||
docker run --rm -v "$MEDIA_VOLUME":/data alpine sh -c 'echo "souvenir de test" > /data/restore-check.txt'
|
||||
|
||||
before="$(counts)"
|
||||
read -r users trees _ _ <<< "$before"
|
||||
[ "$users" -ge 1 ] && [ "$trees" -ge 1 ] || fail "il faut au moins un compte et un arbre avant la sauvegarde (lancer d'abord tools/docker-smoke.sh)"
|
||||
read -r users trees persons _ <<< "$before"
|
||||
[ "$users" -ge 1 ] && [ "$trees" -ge 1 ] && [ "$persons" -ge 1 ] || fail "données de test absentes avant la sauvegarde ($before)"
|
||||
echo "Avant : $before (comptes, arbres, personnes, migrations)"
|
||||
|
||||
# Sauvegarde, mêmes commandes que le README (fichiers écrits dans un dossier temporaire)
|
||||
|
||||
Reference in new issue
Block a user