- Add comprehensive docker-compose configuration with health checks - Create Makefile with 16 utility commands for easy management - Implement robust backup/restore/update scripts with error handling - Add optimized PostgreSQL configuration for Gitea workload - Enhance .env.example with clear dev/prod sections and documentation - Create comprehensive README with installation, configuration, and maintenance guides - Improve .gitignore to exclude all sensitive and generated files - Add Redis persistence (AOF) and memory limits - Configure service dependencies with health conditions 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
107 lines
3.2 KiB
Bash
Executable File
107 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# ============================================
|
|
# Script de mise à jour Gitea
|
|
# ============================================
|
|
# Ce script met à jour Gitea de manière sécurisée
|
|
# avec une sauvegarde automatique avant la mise à jour
|
|
|
|
set -e # Arrêter en cas d'erreur
|
|
|
|
# Couleurs pour l'affichage
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Charger les variables d'environnement
|
|
if [ -f .env ]; then
|
|
source .env
|
|
else
|
|
echo -e "${RED}Erreur: Fichier .env non trouvé${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Fonction de nettoyage en cas d'erreur
|
|
cleanup() {
|
|
echo -e "${YELLOW}Une erreur s'est produite. Vérifiez l'état des services.${NC}"
|
|
echo "Pour revenir à l'état précédent, utilisez la dernière sauvegarde:"
|
|
echo " make restore FILE=backups/gitea_backup_*.tar.gz"
|
|
}
|
|
|
|
trap cleanup ERR
|
|
|
|
echo -e "${GREEN}=== Mise à jour de Gitea ===${NC}"
|
|
echo ""
|
|
|
|
# Vérifier que les services tournent
|
|
if ! docker compose ps | grep -q "gitea.*running"; then
|
|
echo -e "${YELLOW}Avertissement: Gitea ne semble pas être en cours d'exécution${NC}"
|
|
read -p "Continuer quand même? (oui/non) " -r
|
|
if [[ ! $REPLY =~ ^[Oo][Uu][Ii]$ ]]; then
|
|
echo "Mise à jour annulée."
|
|
exit 0
|
|
fi
|
|
fi
|
|
|
|
echo -e "${YELLOW}[1/6] Création d'une sauvegarde de sécurité...${NC}"
|
|
if ! bash scripts/backup.sh; then
|
|
echo -e "${RED}Erreur: La sauvegarde a échoué. Mise à jour annulée.${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✓ Sauvegarde créée${NC}"
|
|
|
|
echo -e "${YELLOW}[2/6] Téléchargement des nouvelles images...${NC}"
|
|
docker compose pull
|
|
echo -e "${GREEN}✓ Images téléchargées${NC}"
|
|
|
|
echo -e "${YELLOW}[3/6] Arrêt des services...${NC}"
|
|
docker compose down
|
|
echo -e "${GREEN}✓ Services arrêtés${NC}"
|
|
|
|
echo -e "${YELLOW}[4/6] Démarrage avec les nouvelles versions...${NC}"
|
|
docker compose up -d
|
|
echo -e "${GREEN}✓ Services démarrés${NC}"
|
|
|
|
echo -e "${YELLOW}[5/6] Attente du démarrage complet...${NC}"
|
|
sleep 10
|
|
|
|
# Attendre que Gitea soit prêt
|
|
MAX_TRIES=60
|
|
COUNTER=0
|
|
until docker compose exec -T gitea wget -q --spider http://localhost:3000/api/healthz 2>/dev/null; do
|
|
COUNTER=$((COUNTER + 1))
|
|
if [ $COUNTER -gt $MAX_TRIES ]; then
|
|
echo -e "${RED}Erreur: Gitea ne répond pas après la mise à jour${NC}"
|
|
echo "Vérifiez les logs: docker compose logs gitea"
|
|
exit 1
|
|
fi
|
|
echo "En attente de Gitea... ($COUNTER/$MAX_TRIES)"
|
|
sleep 2
|
|
done
|
|
echo -e "${GREEN}✓ Gitea répond${NC}"
|
|
|
|
echo -e "${YELLOW}[6/6] Vérification de l'état...${NC}"
|
|
# Afficher les versions
|
|
echo ""
|
|
echo "Versions actuelles:"
|
|
docker compose images
|
|
|
|
echo ""
|
|
echo "État des services:"
|
|
docker compose ps
|
|
|
|
echo ""
|
|
echo -e "${GREEN}=== Mise à jour terminée avec succès ===${NC}"
|
|
echo ""
|
|
echo "Vérifications recommandées:"
|
|
echo " 1. Accéder à l'interface web: http://localhost:3000"
|
|
echo " 2. Vérifier les dépôts existants"
|
|
echo " 3. Tester les fonctionnalités principales"
|
|
echo " 4. Consulter les logs: docker compose logs -f gitea"
|
|
echo ""
|
|
echo "En cas de problème, restaurez la sauvegarde:"
|
|
LATEST_BACKUP=$(ls -t backups/gitea_backup_*.tar.gz 2>/dev/null | head -n 1)
|
|
if [ -n "$LATEST_BACKUP" ]; then
|
|
echo " make restore FILE=$LATEST_BACKUP"
|
|
fi
|