Node.js сервер для автоматического получения вебхуков от GitHub и выполнения git pull в соответствующих репозиториях.
- Прием вебхуков от нескольких репозиториев GitHub
- Настройка соответствия URL и папки репозитория через конфигурационный файл
- Автоматическое выполнение
git pullпри получении вебхука - Поддержка работы под PM2 для Ubuntu
- Health check endpoint для мониторинга
- Клонируйте репозиторий:
git clone <repository-url>
cd gitHookCatcher- Установите зависимости:
npm install- Настройте конфигурацию:
Скопируйте
config.jsonи настройте пути к вашим репозиториям:
cp config.json config.jsonОтредактируйте config.json:
{
"port": 3000,
"secret": "",
"repositories": {
"/webhook/repo1": {
"path": "/home/user/repositories/repo1",
"branch": "main"
},
"/webhook/repo2": {
"path": "/home/user/repositories/repo2",
"branch": "develop"
}
}
}- Перейдите в настройки вашего репозитория на GitHub
- Выберите Settings → Webhooks → Add webhook
- Укажите URL вашего сервера:
http://your-server:3000/webhook/repo1 - Content type:
application/json - Выберите события, которые будут отправлять вебхуки (обычно "Just the push event")
- Сохраните вебхук
npm start- Установите PM2 глобально (если еще не установлен):
npm install -g pm2- Создайте директорию для логов:
mkdir -p logs- Запустите сервер через PM2:
pm2 start ecosystem.config.js- Сохраните конфигурацию PM2 для автозапуска:
pm2 save
pm2 startup# Просмотр статуса
pm2 status
# Просмотр логов
pm2 logs githook-catcher
# Перезапуск
pm2 restart githook-catcher
# Остановка
pm2 stop githook-catcher
# Удаление из PM2
pm2 delete githook-catcherПроверка работоспособности сервера:
curl http://localhost:3000/healthgitHookCatcher/
├── server.js # Основной файл сервера
├── config.json # Конфигурация репозиториев
├── ecosystem.config.js # Конфигурация PM2
├── package.json # Зависимости проекта
└── README.md # Документация
- Node.js >= 14.0.0
- Git установлен в системе
- Права на выполнение
git pullв указанных директориях репозиториев
- Для production рекомендуется настроить секрет в
config.jsonи реализовать проверку подписи GitHub - Используйте HTTPS для вебхуков в production
- Ограничьте доступ к серверу через firewall
Убедитесь, что пользователь, под которым запущен сервер, имеет права на:
- Чтение и запись в директории репозиториев
- Выполнение команды
git pull
-
Ошибка "Repository path does not exist"
- Проверьте правильность путей в
config.json - Убедитесь, что пути абсолютные
- Проверьте правильность путей в
-
Ошибка при выполнении git pull
- Проверьте права доступа к репозиторию
- Убедитесь, что репозиторий является git репозиторием
- Проверьте, что указанная ветка существует
-
Вебхук не приходит
- Проверьте, что сервер доступен из интернета
- Проверьте логи PM2:
pm2 logs githook-catcher - Проверьте настройки вебхука в GitHub
MIT