Skip to content

dab512/Simple-ci

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Simple-CI

Простой набор sh-скриптов для развёртывания и поддержки сервисов. Пайплайн: git → test → beta → prod.

Быстрый старт

Вариант 1: Автономная установка (одна команда)

Скопируйте и вставьте в терминал — скрипт скачается во временную папку и запустится:

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.

Скрипт:

  1. Спросит URL вашего git-репозитория и ветку
  2. Клонирует репозиторий в указанную папку
  3. Проведёт интерактивную настройку окружений
  4. Развернёт проект в пустые папки

Вариант 2: Из клонированного репозитория

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 показывает текущую версию и окружение в браузере.

GitHub Webhook

На TEST-сервере доступен githook.php — при push в отслеживаемую ветку GitHub автоматически обновляет тестовое окружение. На BETA и PROD этот файл удаляется при развёртывании.

Скрипты

install.sh — Настройка

Интерактивный мастер настройки. Работает в двух режимах:

  • Автономный: скачиваете только install.sh, запускаете — он сам клонирует репозиторий
  • Из репозитория: запускаете из клонированного репо

Запрашивает:

  • Домены и папки для test / beta / prod
  • Параметры БД (общая для beta+prod, отдельная для test)
  • Настройки git (репозиторий, ветка)

Проверяет готовность папок и выполняет первичное развёртывание.

git2test.sh — Обновление TEST

Двухкомпонентный скрипт:

  1. Фаза 1: скачивает обновления из указанной git-ветки
  2. Фаза 2: обновляет TEST новейшей версией скриптов

test2beta.sh — TEST → BETA

Копирует файлы из TEST в BETA, сохраняя конфиги и пользовательские данные. Создаёт бэкап перед обновлением.

beta2prod.sh — BETA → PROD

Копирует файлы из BETA в PROD. Требует двойное подтверждение (yes + ввод слова "DEPLOY"). Создаёт бэкап.

status.sh — Статус

Показывает таблицу версий всех окружений, сравнивает их и подсказывает следующие действия.

Требования

  • bash 4.0+
  • rsync
  • git

Документация

Подробное описание переменных, окружений и связей: doc/environment.md

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors