#!/bin/bash #=============================================================================== # ГЛАВНЫЙ СКРИПТ: ЗАПУСК ВСЕХ ШАГОВ #=============================================================================== # Запуск: sudo bash 02-k-git-server-deploy.all.sh [step_number] # # Без аргументов - запуск всех шагов по порядку # С номером шага - запуск конкретного шага # # Примеры: # sudo bash 02-k-git-server-deploy.all.sh # все шаги # sudo bash 02-k-git-server-deploy.all.sh 7 # только шаг 7 # sudo bash 02-k-git-server-deploy.all.sh 7-9 # шаги с 7 по 9 #=============================================================================== SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) source "$SCRIPT_DIR/02-k-git-server-deploy.00.sh" init_log check_root #------------------------------------------------------------------------------- # Список шагов #------------------------------------------------------------------------------- declare -A STEPS=( ["01"]="Подготовка системы" ["02"]="Создание пользователя git" ["03"]="Установка Gitea" ["04"]="Systemd unit" ["05"]="Конфигурация Gitea" ["06"]="Запуск Gitea" ["07"]="Nginx (HTTP only)" ["08"]="SSL-сертификат" ["09"]="Nginx (HTTPS)" ["10"]="Firewall" ["11"]="Администратор Gitea" ["12"]="Скрипты бэкапа" ["13"]="Настройка почты (msmtp)" ["14"]="Настройка logrotate" ["99"]="Финальная проверка" ) #------------------------------------------------------------------------------- # Функция запуска шага #------------------------------------------------------------------------------- run_step() { local step="$1" local script="$SCRIPT_DIR/02-k-git-server-deploy.${step}.sh" if [[ ! -f "$script" ]]; then print_error "Скрипт не найден: $script" return 1 fi print_header "ЗАПУСК ШАГА ${step}: ${STEPS[$step]}" if bash "$script"; then print_success "Шаг $step завершён успешно" return 0 else print_error "Шаг $step завершился с ошибкой" return 1 fi } #------------------------------------------------------------------------------- # Обработка аргументов #------------------------------------------------------------------------------- if [[ -n "$1" ]]; then # Запуск конкретного шага или диапазона if [[ "$1" =~ ^([0-9]+)-([0-9]+)$ ]]; then # Диапазон шагов (например, 7-9) START_STEP="${BASH_REMATCH[1]}" END_STEP="${BASH_REMATCH[2]}" print_info "Запуск шагов с $START_STEP по $END_STEP" for step in "${!STEPS[@]}"; do if [[ "$step" -ge "$START_STEP" && "$step" -le "$END_STEP" ]]; then run_step "$step" || exit 1 fi done | sort elif [[ "$1" =~ ^[0-9]+$ ]]; then # Один шаг run_step "$1" || exit 1 else print_error "Неверный аргумент: $1" echo "Использование: $0 [step_number|start-end]" echo " $0 - все шаги" echo " $0 7 - только шаг 7" echo " $0 7-9 - шаги с 7 по 9" exit 1 fi else # Запуск всех шагов echo "" echo -e "${BLUE}================================================================${NC}" echo -e "${BLUE} ПОЛНЫЙ ЗАПУСК РАЗВЁРТЫВАНИЯ GIT-СЕРВЕРА${NC}" echo -e "${BLUE}================================================================${NC}" echo "" echo "Будут выполнены следующие шаги:" echo "" for step in $(echo "${!STEPS[@]}" | tr ' ' '\n' | sort); do echo " [$step] ${STEPS[$step]}" done echo "" read -p "Начать развёртывание? [y/N]: " CONFIRM if [[ ! "$CONFIRM" =~ ^[Yy]$ ]]; then echo "Отменено." exit 0 fi # Запуск шагов по порядку FAILED_STEPS=() for step in $(echo "${!STEPS[@]}" | tr ' ' '\n' | sort); do echo "" echo -e "${CYAN}============================================================${NC}" echo -e "${CYAN} ШАГ $step: ${STEPS[$step]}${NC}" echo -e "${CYAN}============================================================${NC}" if run_step "$step"; then : else FAILED_STEPS+=("$step") echo "" read -p "Продолжить со следующим шагом? [y/N]: " CONTINUE if [[ ! "$CONTINUE" =~ ^[Yy]$ ]]; then break fi fi done # Итог echo "" echo -e "${BLUE}================================================================${NC}" echo -e "${BLUE} ИТОГ ВЫПОЛНЕНИЯ${NC}" echo -e "${BLUE}================================================================${NC}" if [[ ${#FAILED_STEPS[@]} -eq 0 ]]; then echo -e "${GREEN}Все шаги выполнены успешно!${NC}" else echo -e "${RED}Завершились с ошибкой: ${FAILED_STEPS[*]}${NC}" echo "" echo "Для повторного запуска конкретного шага:" echo " sudo bash $0 <номер_шага>" fi fi