Files
Ansible-Minecraft-Server/roles/05-update/templates/version-switch.sh.j2
hcornet 8f0877cd53
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
new version
2025-08-27 15:11:08 +02:00

55 lines
1.6 KiB
Django/Jinja

#!/bin/bash
# Script de changement de version Minecraft
set -e
if [ $# -ne 1 ]; then
echo "Usage: $0 <version>"
exit 1
fi
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)"
echo "Changement vers la version ${NEW_VERSION}"
# 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
# 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