Простой набор sh-скриптов для развёртывания и поддержки сервисов. Пайплайн: git → test → beta → prod.
Скопируйте и вставьте в терминал — скрипт скачается во временную папку и запустится:
curl -fsSL https://raw.githubusercontent.com/<user>/<repo>/main/utils/install.sh -o /tmp/simple-ci-install.sh && bash /tmp/simple-ci-install.shИли через wget:
wget -qO /tmp/simple-ci-install.sh https://raw.githubusercontent.com/<user>/<repo>/main/utils/install.sh && bash /tmp/simple-ci-install.shЗамените
<user>/<repo>на ваш GitHub-путь, напримерmyteam/myproject.
Скрипт:
- Спросит URL вашего git-репозитория и ветку
- Клонирует репозиторий в указанную папку
- Проведёт интерактивную настройку окружений
- Развернёт проект в пустые папки
git clone <url> && cd <repo>
bash utils/install.sh# Статус всех окружений
bash utils/status.sh
# Обновить тест из git
bash utils/git2test.sh
# Продвинуть тест → бета
bash utils/test2beta.sh
# Продвинуть бета → прод
bash utils/beta2prod.sh├── project/ Исходный код проекта (шаблон)
│ ├── manifest.json Версия и окружение проекта
│ ├── index.php Информационная страница (версия, окружение)
│ └── githook.php GitHub Webhook (только для TEST)
├── doc/ Документация
│ └── environment.md Описание переменных и окружений
├── utils/ Скрипты развёртывания
│ ├── common.sh Общая библиотека
│ ├── install.sh Интерактивная настройка (работает автономно)
│ ├── git2test.sh Обновление TEST из git
│ ├── test2beta.sh Продвижение TEST → BETA
│ ├── beta2prod.sh Продвижение BETA → PROD
│ └── status.sh Статус версий
└── .env Конфигурация (генерируется, не коммитится)
project/ ──git2test──▶ TEST ──test2beta──▶ BETA ──beta2prod──▶ PROD
- TEST — обновляется из git (вручную или через GitHub Webhook)
- BETA — обновляется из TEST после ручной проверки
- PROD — обновляется из BETA с двойным подтверждением
Каждое окружение хранит в manifest.json поле environment (test/beta/prod),
которое автоматически обновляется при продвижении. Файл index.php показывает
текущую версию и окружение в браузере.
На TEST-сервере доступен githook.php — при push в отслеживаемую ветку
GitHub автоматически обновляет тестовое окружение. На BETA и PROD этот файл
удаляется при развёртывании.
Интерактивный мастер настройки. Работает в двух режимах:
- Автономный: скачиваете только
install.sh, запускаете — он сам клонирует репозиторий - Из репозитория: запускаете из клонированного репо
Запрашивает:
- Домены и папки для test / beta / prod
- Параметры БД (общая для beta+prod, отдельная для test)
- Настройки git (репозиторий, ветка)
Проверяет готовность папок и выполняет первичное развёртывание.
Двухкомпонентный скрипт:
- Фаза 1: скачивает обновления из указанной git-ветки
- Фаза 2: обновляет TEST новейшей версией скриптов
Копирует файлы из TEST в BETA, сохраняя конфиги и пользовательские данные. Создаёт бэкап перед обновлением.
Копирует файлы из BETA в PROD. Требует двойное подтверждение (yes + ввод слова "DEPLOY"). Создаёт бэкап.
Показывает таблицу версий всех окружений, сравнивает их и подсказывает следующие действия.
bash4.0+rsyncgit
Подробное описание переменных, окружений и связей: doc/environment.md