chore(ops): fail early on a stale Node and compare migrations per dialect

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
zacharyandClaude Opus 5 committed 2026-09-13 22:21:43 +02:00
1 parent 0a94110a67
commit fbebe31ef3
1 file changed
+17 -2
+17 -2
View File
@@ -37,11 +37,26 @@ cd "$REPO"
}
echo "Commit déployé : $(git log --oneline -1)"
# Le dépôt exige un Node récent (champ engines.node). Le Node par défaut du poste
# est plus ancien que ça : sans ce contrôle, l'échec surviendrait au milieu du
# build, avec un message de pnpm qui ne dit pas quoi faire.
required_node="$(grep -oP '^node = "\K[^"]+' "$REPO/mise.toml" 2>/dev/null || echo '24.18.0')"
if ! node -e "process.exit(process.versions.node.localeCompare('$required_node', undefined, { numeric: true }) < 0 ? 1 : 0)"; then
echo "Node $(node -v) est trop ancien — il en faut au moins v$required_node." >&2
echo "Par exemple : export PATH=\"\$HOME/.local/share/nvm/v24.20.0/bin:\$PATH\"" >&2
exit 1
fi
# Une migration présente ici et absente en prod n'est pas bloquante — Homarr les
# applique au démarrage — mais elle rend le rollback non trivial : restaurer
# l'archive ne défait pas un schéma déjà migré. On veut le savoir AVANT.
local_migration="$(find packages/db/migrations -name '*.sql' -printf '%f\n' | sort | tail -1)"
remote_migration="$(ssh "$HOST" "find $REMOTE_DIR/db/migrations -name '*.sql' -printf '%f\n' | sort | tail -1")"
#
# Comparaison par dialecte : la prod embarque les migrations de tous les moteurs,
# et prendre le maximum toutes dialectes confondues masquerait une divergence
# propre à celui qui tourne réellement.
DIALECT="${HOMARR_DB_DIALECT:-sqlite}"
local_migration="$(find "packages/db/migrations/$DIALECT" -name '*.sql' -printf '%f\n' | sort | tail -1)"
remote_migration="$(ssh "$HOST" "find $REMOTE_DIR/db/migrations/$DIALECT -name '*.sql' -printf '%f\n' | sort | tail -1")"
echo "Dernière migration — locale : $local_migration | prod : $remote_migration"
if [ "$local_migration" != "$remote_migration" ]; then
echo