alpinux.presentations/scripts/deploy-presentations.sh
Cédrix 9ecf1973b8 Suivre le nom réel du dépôt : alpinux.presentations
Le dépôt a été créé sur la forge sous le nom alpinux.presentations, et non
alpinux-presentations : adresses de clonage, lien de la page d'accueil et
consignes d'installation sont alignés.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01M713yNBL8cssBA1Zri5QLT
2026-10-10 22:06:47 +02:00

40 lines
1.6 KiB
Bash
Executable file

#!/bin/bash
# Met en ligne presentations.alpinux.org depuis le dépôt alpinux.presentations.
# Appelé par le service webhook après chaque push sur main, ou à la main en secours.
# Calqué sur deploy-wiki.sh : le serveur exécute sa copie, posée par deploy/installer.sh.
set -e
REPO_DIR="/opt/presentations-alpinux/repo"
STAGING="/opt/presentations-alpinux/staging"
TARGET="/var/www/clients/client1/web22/web"
NODE_BIN="/opt/presentations-alpinux/node/bin"
LOG="/var/log/presentations-deploy.log"
export PATH="$NODE_BIN:$PATH"
# Deux push rapprochés : le second déploiement attend la fin du premier au lieu de
# construire dans le même staging.
exec 9> "/tmp/presentations-deploy.lock"
flock 9
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploy started" >> "$LOG"
trap 'echo "[$(date "+%Y-%m-%d %H:%M:%S")] ABANDON : le site en ligne est inchangé" >> "$LOG"' ERR
cd "$REPO_DIR"
git pull origin main >> "$LOG" 2>&1
# --ignore-scripts : aucune dépendance n'a besoin d'exécuter du code à l'installation,
# et aucune n'en a donc le droit.
npm ci --ignore-scripts --no-audit --no-fund >> "$LOG" 2>&1
# Build dans un répertoire de staging : le site en ligne reste intact si le build
# échoue (front matter invalide, image manquante, ressource externe).
node scripts/build.mjs "$STAGING" >> "$LOG" 2>&1
# Bascule vers le DocumentRoot une fois le build valide. Les deux dossiers exclus
# appartiennent à ISPConfig (pages d'erreur, statistiques) : --delete les épargne.
rsync -rltD --no-perms --omit-dir-times --delete \
--exclude=/error/ --exclude=/stats/ \
"$STAGING/" "$TARGET/" >> "$LOG" 2>&1
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploy done" >> "$LOG"