alpinux-www/deploiement/deploy-www.sh
Cédrix 32b7cd1a0e Détacher www.alpinux.org du monorepo, avec son déploiement
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
2026-09-20 09:47:18 +02:00

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"