L'accueil n'annonçait que six pages du wiki, et rien ne menait au reste : qui voulait savoir ce qui avait bougé depuis sa dernière visite n'avait nulle part où aller. modifications.html liste tout ce que le wiki publie, du plus récemment retouché au plus ancien, avec un filtre par titre ou par rubrique. Elle lit toutes-les-pages.json, que le build du wiki écrit à côté de derniers-articles.json ; tant que ce fichier n'existe pas, elle se rabat sur celui de l'accueil et le dit plutôt que de rester vide. 404.html reprend la charte et propose l'accueil, le wiki, les mises à jour et les listes. Elle attend encore sa directive Apache : le site répond aujourd'hui 200 et l'accueil à toute adresse inconnue, ce qui trompe le visiteur comme le moteur de recherche. Le README dit quoi poser dans le .htaccess du serveur. Les deux pages partagent commun.css plutôt que de recopier le style de l'accueil, qui garde le sien en ligne — une page, une requête. Et le garde-fou du déploiement, qui ne regardait que l'accueil, refuse désormais de mettre en ligne n'importe quelle page tronquée : une 404 servie à moitié serait aussi laide qu'une erreur. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JYfYUZRcJmmEWJwAxZb4o2
32 lines
1.3 KiB
Bash
Executable file
32 lines
1.3 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 : une page tronquée ne part pas en ligne. C'est l'équivalent, pour un
|
|
# site sans build, du « mkdocs build --strict » du wiki. Toutes les pages y passent,
|
|
# pas seulement l'accueil : la 404 servie à moitié serait aussi laide qu'une erreur.
|
|
for page in "$SOURCE"/*.html; do
|
|
if ! grep -q "</html>" "$page"; then
|
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] ABANDON : $(basename "$page") incomplet" >> "$LOG"
|
|
exit 1
|
|
fi
|
|
done
|
|
|
|
# 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"
|