La page d'accueil vivait sous home/ dans alpinux.site.2026, sans webhook : elle était déposée à la main sur le serveur. Le dépôt avait fini par diverger — la version en ligne portait quatre mois de modifications jamais revenues dans git. Ce dépôt suit la règle des autres domaines : un domaine, un dépôt. Le site est dans site/, la chaîne de déploiement dans deploiement/ — clone sur le serveur, service d'écoute du webhook, relais Apache, et l'ACL qui donne le droit d'écrire dans le DocumentRoot. installer.sh pose l'ensemble en une fois, et se relance sans rien casser. Le rsync est sans --delete, volontairement : le DocumentRoot contient aussi le .htaccess qui relaie /public-calendars vers Nextcloud et les pages d'erreur d'ISPConfig. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ae3qPEPRrNkEY5LwcTTKc1
29 lines
1.2 KiB
Bash
Executable file
29 lines
1.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# Met en ligne www.alpinux.org depuis le dépôt alpinux-www.
|
|
# Appelé par le service webhook après chaque push sur main, ou à la main en secours.
|
|
set -e
|
|
|
|
REPO_DIR="/opt/www-alpinux/repo"
|
|
SOURCE="$REPO_DIR/site"
|
|
TARGET="/var/www/clients/client1/web11/web"
|
|
LOG="/var/log/www-deploy.log"
|
|
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploy started" >> "$LOG"
|
|
|
|
cd "$REPO_DIR"
|
|
git pull origin main >> "$LOG" 2>&1
|
|
|
|
# Garde-fou : un index.html tronqué ne part pas en ligne. C'est l'équivalent, pour un
|
|
# site sans build, du « mkdocs build --strict » du wiki.
|
|
if ! grep -q "</html>" "$SOURCE/index.html"; then
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ABANDON : index.html incomplet" >> "$LOG"
|
|
exit 1
|
|
fi
|
|
|
|
# Pas de --delete, volontairement : le DocumentRoot contient aussi des fichiers qui ne
|
|
# sont pas dans ce dépôt — le .htaccess qui relaie /public-calendars vers Nextcloud, les
|
|
# pages d'erreur et les statistiques d'ISPConfig. Supprimer un fichier ici ne le retire
|
|
# donc pas du serveur : c'est à faire à la main, et c'est écrit dans le README.
|
|
rsync -rltD --no-perms --omit-dir-times "$SOURCE/" "$TARGET/" >> "$LOG" 2>&1
|
|
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] Deploy done" >> "$LOG"
|