From 52562a8a8b1c5afa42bba101330915b060b8cf37 Mon Sep 17 00:00:00 2001 From: Richard Dern Date: Wed, 11 Mar 2026 23:16:25 +0100 Subject: [PATCH] =?UTF-8?q?D=C3=A9ploiement=20sur=20serveur=20secondaire?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy.sh | 92 +++++++++++++++++++++++++++++++------------------------ 1 file changed, 52 insertions(+), 40 deletions(-) diff --git a/deploy.sh b/deploy.sh index 1805a209..cfe94af9 100755 --- a/deploy.sh +++ b/deploy.sh @@ -13,6 +13,7 @@ fi # Configuration DEST_USER="${DEPLOY_DEST_USER:?DEPLOY_DEST_USER manquant}" DEST_HOST="${DEPLOY_DEST_HOST:?DEPLOY_DEST_HOST manquant}" +SECOND_DEST_HOST="${DEPLOY_SECOND_DEST_HOST:?DEPLOY_SECOND_DEST_HOST manquant}" DEST_DIR="/var/lib/www/richard-dern.fr/" HUGO_ENV="production" TARGET_OWNER="caddy:caddy" @@ -33,11 +34,56 @@ is_local_host() { return 1 } -LOCAL_DEPLOY=false -if is_local_host "$DEST_HOST"; then - LOCAL_DEPLOY=true +DEST_HOSTS=("$DEST_HOST") +if [ "$SECOND_DEST_HOST" != "$DEST_HOST" ]; then + DEST_HOSTS+=("$SECOND_DEST_HOST") fi +deploy_to_host() { + local host="$1" + local local_deploy=false + local cmd + + if is_local_host "$host"; then + local_deploy=true + fi + + if [ "$local_deploy" = true ]; then + if [ ! -d "$DEST_DIR" ]; then + echo "Dossier de destination introuvable: $DEST_DIR" >&2 + exit 1 + fi + + echo "==> Vérification/pose des ACL sur $DEST_DIR" + sudo "$SETFACL_BIN" -R -m u:"$USER":rwx -m m:rwx "$DEST_DIR" + sudo "$SETFACL_BIN" -dR -m u:"$USER":rwx -m m:rwx "$DEST_DIR" + + echo "==> Synchronisation locale du site vers $DEST_DIR" + rsync -rlvz --delete \ + --exclude='data/***' \ + --no-owner --no-group \ + --no-perms --omit-dir-times --no-times \ + --checksum \ + public/ "$DEST_DIR" + + find "$DEST_DIR" -type d -name data -exec rm -rf {} + + sudo "$CHOWN_BIN" -R "$TARGET_OWNER" "$DEST_DIR" + return + fi + + echo "==> Synchronisation du site vers le serveur $host" + rsync -rlvz --delete \ + --exclude='data/***' \ + --no-owner --no-group \ + --no-perms --omit-dir-times --no-times \ + --checksum \ + public/ "$DEST_USER@$host:$DEST_DIR" + + cmd="find \"$DEST_DIR\" -type d -name data -exec rm -rf {} +" + ssh "$DEST_USER@$host" "$cmd" + ssh "$DEST_USER@$host" "$CHOWN_BIN -R $TARGET_OWNER '$DEST_DIR'" +} + echo "==> Vérification des liens externes" node "$SCRIPT_DIR/tools/check_external_links.js" @@ -62,43 +108,9 @@ npm run stats:generate echo "==> Génération du site Hugo pour l'environnement $HUGO_ENV (avec nettoyage de destination)" hugo --environment "$HUGO_ENV" --cleanDestinationDir -if [ "$LOCAL_DEPLOY" = true ]; then - if [ ! -d "$DEST_DIR" ]; then - echo "Dossier de destination introuvable: $DEST_DIR" >&2 - exit 1 - fi - - echo "==> Vérification/pose des ACL sur $DEST_DIR" - sudo "$SETFACL_BIN" -R -m u:"$USER":rwx -m m:rwx "$DEST_DIR" - sudo "$SETFACL_BIN" -dR -m u:"$USER":rwx -m m:rwx "$DEST_DIR" -fi - -if [ "$LOCAL_DEPLOY" = true ]; then - echo "==> Synchronisation locale du site vers $DEST_DIR" - rsync -rlvz --delete \ - --exclude='data/***' \ - --no-owner --no-group \ - --no-perms --omit-dir-times --no-times \ - --checksum \ - public/ "$DEST_DIR" -else - echo "==> Synchronisation du site vers le serveur $DEST_HOST" - rsync -rlvz --delete \ - --exclude='data/***' \ - --no-owner --no-group \ - --no-perms --omit-dir-times --no-times \ - --checksum \ - public/ "$DEST_USER@$DEST_HOST:$DEST_DIR" -fi - -if [ "$LOCAL_DEPLOY" = true ]; then - find "$DEST_DIR" -type d -name data -exec rm -rf {} + - sudo "$CHOWN_BIN" -R "$TARGET_OWNER" "$DEST_DIR" -else - CMD="find \"$DEST_DIR\" -type d -name data -exec rm -rf {} +" - ssh "$DEST_USER@$DEST_HOST" "$CMD" - ssh "$DEST_USER@$DEST_HOST" "$CHOWN_BIN -R $TARGET_OWNER '$DEST_DIR'" -fi +for host in "${DEST_HOSTS[@]}"; do + deploy_to_host "$host" +done node tools/update_lemmy_post_dates.js