Files
gitserver/02/02-k-git-server-deploy.all.sh
2026-02-19 20:05:04 +03:00

156 lines
5.7 KiB
Bash
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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