156 lines
5.7 KiB
Bash
Executable File
156 lines
5.7 KiB
Bash
Executable File
#!/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
|