diff --git a/Makefile b/Makefile index c3d8787..5b5bf4d 100644 --- a/Makefile +++ b/Makefile @@ -1,86 +1,151 @@ -.PHONY: help up down restart ps logs logs-f backup restore update health shell-gitea shell-db clean +# Makefile pour Gitea - Agence66 +# Usage: make [commande] + +.PHONY: help up down restart ps logs logs-f backup restore update health shell-gitea shell-db clean pull build config admin-create stats env-example # Include .env file if it exists -include .env export -help: ## Afficher cette aide - @echo "Commandes disponibles pour Gitea Docker :" +# Couleurs pour l'affichage +BLUE := \033[0;34m +GREEN := \033[0;32m +YELLOW := \033[1;33m +RED := \033[0;31m +NC := \033[0m + +help: ## Affiche cette aide + @echo -e "$(BLUE)Gitea - Agence66$(NC)" @echo "" - @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}' + @echo -e "$(YELLOW)Commandes disponibles:$(NC)" + @grep -hE '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf " $(GREEN)%-20s$(NC) %s\n", $$1, $$2}' -up: ## Démarrer tous les services - @echo "Démarrage des services Gitea..." +## Gestion des services + +up: ## Démarre tous les services + @echo -e "$(BLUE)Démarrage des services Gitea...$(NC)" @docker compose up -d - @echo "Services démarrés. Accédez à Gitea sur http://localhost:3000" + @echo -e "$(GREEN)Services démarrés !$(NC) Accédez à Gitea sur http://localhost:3000" -down: ## Arrêter tous les services - @echo "Arrêt des services..." +down: ## Arrête tous les services + @echo -e "$(YELLOW)Arrêt des services...$(NC)" @docker compose down + @echo -e "$(GREEN)Services arrêtés$(NC)" -restart: ## Redémarrer tous les services - @echo "Redémarrage des services..." +restart: ## Redémarre tous les services + @echo -e "$(BLUE)Redémarrage des services...$(NC)" @docker compose restart + @echo -e "$(GREEN)Services redémarrés$(NC)" -ps: ## Afficher le statut des services +ps: ## Affiche le statut des services + @echo -e "$(BLUE)Statut des services:$(NC)" @docker compose ps -logs: ## Afficher les logs (dernières 100 lignes) +## Logs et monitoring + +logs: ## Affiche les logs (dernières 100 lignes) + @echo -e "$(BLUE)Logs des services (100 dernières lignes):$(NC)" @docker compose logs --tail=100 -logs-f: ## Suivre les logs en temps réel +logs-f: ## Suit les logs en temps réel + @echo -e "$(BLUE)Logs en temps réel (Ctrl+C pour arrêter):$(NC)" @docker compose logs -f -backup: ## Créer une sauvegarde complète (DB + repositories) - @bash scripts/backup.sh - -restore: ## Restaurer depuis une sauvegarde (usage: make restore FILE=backups/gitea_backup_YYYYMMDD_HHMMSS.tar.gz) - @if [ -z "$(FILE)" ]; then \ - echo "Erreur: Spécifiez le fichier de sauvegarde avec FILE="; \ - echo "Usage: make restore FILE=backups/gitea_backup_YYYYMMDD_HHMMSS.tar.gz"; \ - exit 1; \ - fi - @bash scripts/restore.sh "$(FILE)" - -update: ## Mettre à jour Gitea (avec backup automatique) - @bash scripts/update.sh - -health: ## Vérifier la santé des services - @echo "État de santé des services:" +health: ## Vérifie la santé des services + @echo -e "$(BLUE)État de santé des services:$(NC)" @echo "" @docker compose ps --format "table {{.Name}}\t{{.Status}}\t{{.Health}}" @echo "" - @echo "Détails des health checks:" - @docker inspect --format='{{.Name}}: {{.State.Health.Status}}' $$(docker compose ps -q) 2>/dev/null || echo "Aucun service en cours d'exécution" + @echo -e "$(BLUE)Détails des health checks:$(NC)" + @docker inspect --format='{{.Name}}: {{.State.Health.Status}}' $$(docker compose ps -q) 2>/dev/null || echo -e "$(YELLOW)Aucun service en cours d'exécution$(NC)" -shell-gitea: ## Ouvrir un shell dans le conteneur Gitea - @docker compose exec gitea /bin/sh +stats: ## Affiche les statistiques d'utilisation des ressources + @echo -e "$(BLUE)Statistiques des conteneurs:$(NC)" + @docker stats --no-stream $$(docker compose ps -q) -shell-db: ## Ouvrir un shell PostgreSQL - @docker compose exec db psql -U $(POSTGRES_USER) -d $(POSTGRES_DATABASE) +## Sauvegarde et restauration -clean: ## Nettoyer les conteneurs arrêtés et volumes non utilisés - @echo "Nettoyage des conteneurs arrêtés..." - @docker compose down -v - @echo "Nettoyage terminé" +backup: ## Crée une sauvegarde complète (DB + repositories) + @echo -e "$(BLUE)Création de la sauvegarde...$(NC)" + @bash scripts/backup.sh + @echo -e "$(GREEN)Sauvegarde terminée$(NC)" -pull: ## Télécharger les dernières images Docker - @docker compose pull - -build: ## Rebuild les images si nécessaire - @docker compose build - -config: ## Valider et afficher la configuration docker-compose - @docker compose config - -# Commandes avancées -admin-create: ## Créer un utilisateur admin (usage: make admin-create USER=admin EMAIL=admin@example.com) - @if [ -z "$(USER)" ] || [ -z "$(EMAIL)" ]; then \ - echo "Usage: make admin-create USER=username EMAIL=email@example.com"; \ +restore: ## Restaure depuis une sauvegarde (usage: make restore FILE=backups/gitea_backup_YYYYMMDD_HHMMSS.tar.gz) + @if [ -z "$(FILE)" ]; then \ + echo -e "$(RED)Erreur: Spécifiez le fichier de sauvegarde avec FILE=$(NC)"; \ + echo -e "$(YELLOW)Usage: make restore FILE=backups/gitea_backup_YYYYMMDD_HHMMSS.tar.gz$(NC)"; \ exit 1; \ fi - @docker compose exec gitea gitea admin user create --admin --username $(USER) --email $(EMAIL) --password "ChangeMe123!" - @echo "Utilisateur admin créé. Mot de passe par défaut: ChangeMe123!" + @echo -e "$(BLUE)Restauration depuis $(FILE)...$(NC)" + @bash scripts/restore.sh "$(FILE)" + @echo -e "$(GREEN)Restauration terminée$(NC)" -stats: ## Afficher les statistiques d'utilisation des ressources - @docker stats --no-stream $$(docker compose ps -q) +## Mise à jour et maintenance + +update: ## Met à jour Gitea (avec backup automatique) + @echo -e "$(BLUE)Mise à jour de Gitea...$(NC)" + @bash scripts/update.sh + @echo -e "$(GREEN)Mise à jour terminée$(NC)" + +pull: ## Télécharge les dernières images Docker + @echo -e "$(BLUE)Téléchargement des dernières images...$(NC)" + @docker compose pull + @echo -e "$(GREEN)Images téléchargées$(NC)" + +build: ## Rebuild les images si nécessaire + @echo -e "$(BLUE)Build des images...$(NC)" + @docker compose build + @echo -e "$(GREEN)Build terminé$(NC)" + +config: ## Valide et affiche la configuration docker-compose + @echo -e "$(BLUE)Configuration docker-compose:$(NC)" + @docker compose config + +## Shells et accès + +shell-gitea: ## Ouvre un shell dans le conteneur Gitea + @echo -e "$(BLUE)Ouverture du shell Gitea...$(NC)" + @docker compose exec gitea /bin/sh + +shell-db: ## Ouvre un shell PostgreSQL + @echo -e "$(BLUE)Ouverture du shell PostgreSQL...$(NC)" + @docker compose exec db psql -U $(POSTGRES_USER) -d $(POSTGRES_DATABASE) + +## Administration + +admin-create: ## Crée un utilisateur admin (usage: make admin-create USER=admin EMAIL=admin@example.com) + @if [ -z "$(USER)" ] || [ -z "$(EMAIL)" ]; then \ + echo -e "$(RED)Usage: make admin-create USER=username EMAIL=email@example.com$(NC)"; \ + exit 1; \ + fi + @echo -e "$(BLUE)Création de l'utilisateur admin...$(NC)" + @docker compose exec gitea gitea admin user create --admin --username $(USER) --email $(EMAIL) --password "ChangeMe123!" + @echo -e "$(GREEN)Utilisateur admin créé !$(NC)" + @echo -e "$(YELLOW)Mot de passe par défaut: ChangeMe123!$(NC)" + +## Nettoyage + +clean: ## Nettoie les conteneurs arrêtés et volumes non utilisés + @echo -e "$(YELLOW)Nettoyage des conteneurs et volumes...$(NC)" + @docker compose down -v + @echo -e "$(GREEN)Nettoyage terminé$(NC)" + +## Configuration + +env-example: ## Affiche un exemple de fichier .env + @if [ -f .env.example ]; then \ + cat .env.example; \ + else \ + echo -e "$(RED)Fichier .env.example non trouvé$(NC)"; \ + fi + +quick-setup: ## Configuration rapide (copie .env.example vers .env) + @if [ ! -f .env ]; then \ + echo -e "$(BLUE)Création du fichier .env...$(NC)"; \ + cp .env.example .env; \ + echo -e "$(GREEN)Fichier .env créé !$(NC)"; \ + echo -e "$(YELLOW)Éditez maintenant .env avec vos vraies valeurs:$(NC)"; \ + echo " nano .env"; \ + else \ + echo -e "$(YELLOW)Le fichier .env existe déjà$(NC)"; \ + fi