Автодеплой сайта при коммите
📋 Описание
Эта инструкция описывает, как настроить автоматическое обновление (деплой) сайта на Windows-сервере после git push
в репозиторий Gitea, используя webhook и скрипт на стороне сервера.
🧱 Что используется
- Gitea — self-hosted Git-сервер
- Windows Server — где расположен сайт и работает Apache
- Apache — размещает сайт, слушает Webhook
- Git — установлен и настроен на сервере
- PHP — обрабатывает Webhook
- Планировщик задач Windows — запускает bat-скрипт
✅ Структура проекта
- Исходники сайта:
C:\mykb
- Папка публикации:
C:\Apache24\htdocs\1c-knowledge
- Gitea-репозиторий:
https://git.sinenikolsky.ru/artem/docusaurus-kb.git
🔧 Шаг 1: Подготовка репозитория на сервере
cd C:\mykbgit initgit remote add origin https://git.sinenikolsky.ru/artem/docusaurus-kb.gitgit pull origin main
Настрой имя пользователя и email:
git config --global user.name "Artem"git config --global user.email "you@example.com"
🔧 Шаг 2: Настройка webhook в Gitea
- Перейди в репозиторий → Settings → Webhooks
- Добавь URL:
http://<your-server-address>/webhook/index.php
- Тип:
application/json
- Включи только
push
события
🔧 Шаг 3: Создание webhook-обработчика
📁 Путь: C:\Apache24\htdocs\webhook\index.php
<?phpini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);
$logMessage = "Gitea Webhook triggered update";file_put_contents('C:\\Apache24\\htdocs\\webhook\\webhook.log', date('Y-m-d H:i:s') . " Webhook received\n", FILE_APPEND);
// Записать событие в журналexec('eventcreate /T INFORMATION /ID 1000 /L APPLICATION /SO DocusaurusWebhook /D "' . $logMessage . '"');
echo "OK";
Проверь, что Apache обрабатывает .php
файлы.
🔧 Шаг 4: Создание скрипта обновления
📁 Файл: C:\mykb\update-site.bat
@echo offcd /d C:\mykbecho Updating project...git pull origin main
call npm install --legacy-peer-depscall npm run build
robocopy build C:\Apache24\htdocs\1c-knowledge /MIR /NP /NFL /NDLexit /b 0
⚠️ Убедись, что
robocopy
установлен (входит в состав Windows).
🔧 Шаг 5: Создание задачи в планировщике
- Открой “Планировщик заданий Windows”
- Создай задачу “Docusaurus Auto Deploy”
- Установи:
- Триггеры: При событии (Простое, Журнал: Приложение, Источник: DocusaurusWebhook, Код события: 1000)
- Действие:
cmd.exe
- Аргументы:
/c C:\mykb\update-site.bat
- Аргументы:
- Параметры безопасности: Выполнять вне зависимости от регистрации пользователя; Выполнять с наивысшими правами;
Проверь запуск вручную:
schtasks /Run /TN "Docusaurus Auto Deploy"
🧪 Шаг 6: Проверка
- Сделай
git push
в Gitea - Перейди в Gitea → репозиторий → Webhooks → Recent Deliveries
- Убедись, что webhook сработал и вернул
OK
- Проверь, что сайт обновился в
http://<your-server>/1c-knowledge/
💡 Советы
- Включи логирование в
update-site.bat
, если нужно отладить:Terminal window npm run build >> log.txt 2>&1 - Используй
git reset --hard
передpull
, если бывают конфликты - Проверь, что
git
работает изcmd
без ошибок
✅ Готово
Теперь сайт будет автоматически обновляться после каждого push в Gitea! 🎉