new version
Some checks failed
Ansible Minecraft CI/CD / Ansible Lint (push) Successful in 8s
Ansible Minecraft CI/CD / Syntax Check (push) Failing after 7s
Ansible Minecraft CI/CD / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD / Deploy to Production (push) Has been skipped

This commit is contained in:
2025-08-27 15:11:08 +02:00
parent 3e64946953
commit 8f0877cd53
105 changed files with 911 additions and 2540 deletions

View File

@@ -1,36 +1,55 @@
#!/bin/bash
# {{ ansible_managed }}
# Script de changement de version Minecraft
STAGING_DIR="{{ update_staging_dir }}"
SERVER_DIR="{{ minecraft_server_dir }}"
PREVIOUS_DIR="{{ spigot_previous_dir }}"
DATE=$(date +%Y%m%d_%H%M%S)
set -e
# Create previous directory if not exists
mkdir -p "$PREVIOUS_DIR"
if [ $# -ne 1 ]; then
echo "Usage: $0 <version>"
exit 1
fi
# Backup current server
echo "Backing up current server..."
tar -czf "$PREVIOUS_DIR/server_before_update_$DATE.tar.gz" \
-C "$SERVER_DIR" \
--exclude='world*' \
--exclude='logs' \
--exclude='crash-reports' \
.
NEW_VERSION=$1
MINECRAFT_DIR="{{ minecraft_server_dir }}"
TEMP_BUILD_DIR="{{ temp_build_dir }}"
BACKUP_DIR="${MINECRAFT_DIR}/backup-$(date +%Y%m%d_%H%M%S)"
# Sync new version to server directory
echo "Switching to new version..."
rsync -av --delete \
--exclude='world*' \
--exclude='logs' \
--exclude='crash-reports' \
--exclude='plugins/*.yml' \
--exclude='ops.json' \
--exclude='whitelist.json' \
--exclude='banned-*.json' \
"$STAGING_DIR/" "$SERVER_DIR/"
echo "Changement vers la version ${NEW_VERSION}"
# Set permissions
chown -R {{ minecraft_user }}:{{ minecraft_group }} "$SERVER_DIR"
# Vérification que le nouveau JAR existe
if [ ! -f "${TEMP_BUILD_DIR}/spigot-${NEW_VERSION}.jar" ]; then
echo "Erreur: Fichier spigot-${NEW_VERSION}.jar introuvable"
exit 1
fi
echo "Version switch completed!"
# Arrêt du serveur
echo "Arrêt du serveur Minecraft..."
systemctl stop minecraft || true
sleep 10
# Sauvegarde de l'ancienne version
echo "Sauvegarde de l'ancienne version..."
mkdir -p "${BACKUP_DIR}"
cp "${MINECRAFT_DIR}/spigot.jar" "${BACKUP_DIR}/spigot-old.jar" 2>/dev/null || true
# Copie de la nouvelle version
echo "Installation de la nouvelle version..."
cp "${TEMP_BUILD_DIR}/spigot-${NEW_VERSION}.jar" "${MINECRAFT_DIR}/spigot.jar"
chown {{ minecraft_user }}:{{ minecraft_group }} "${MINECRAFT_DIR}/spigot.jar"
# Test de démarrage
echo "Test de la nouvelle version..."
systemctl start minecraft
# Vérification que le serveur démarre correctement
sleep 30
if systemctl is-active --quiet minecraft; then
echo "Mise à jour réussie vers la version ${NEW_VERSION}"
echo "Ancienne version sauvegardée dans: ${BACKUP_DIR}"
else
echo "Erreur: La nouvelle version ne démarre pas correctement"
echo "Restauration de l'ancienne version..."
systemctl stop minecraft || true
cp "${BACKUP_DIR}/spigot-old.jar" "${MINECRAFT_DIR}/spigot.jar" 2>/dev/null || true
systemctl start minecraft
exit 1
fi