4.5 KiB
4.5 KiB
title, slug
| title | slug |
|---|---|
| Автодеплой сайта при коммите | администрирование/автодеплой-сайта-при-коммите |
📋 Описание
Эта инструкция описывает, как настроить автоматическое обновление (деплой) сайта на 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:\mykb
git init
git remote add origin https://git.sinenikolsky.ru/artem/docusaurus-kb.git
git 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
<?php
ini_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 off
cd /d C:\mykb
echo Updating project...
git pull origin main
call npm install --legacy-peer-deps
call npm run build
robocopy build C:\Apache24\htdocs\1c-knowledge /MIR /NP /NFL /NDL
exit /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, если нужно отладить:npm run build >> log.txt 2>&1 - Используй
git reset --hardпередpull, если бывают конфликты - Проверь, что
gitработает изcmdбез ошибок
✅ Готово
Теперь сайт будет автоматически обновляться после каждого push в Gitea! 🎉