Skip to content

viktorzdamarov/gitHookCatcher

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitHub Webhook Catcher

Node.js сервер для автоматического получения вебхуков от GitHub и выполнения git pull в соответствующих репозиториях.

Возможности

  • Прием вебхуков от нескольких репозиториев GitHub
  • Настройка соответствия URL и папки репозитория через конфигурационный файл
  • Автоматическое выполнение git pull при получении вебхука
  • Поддержка работы под PM2 для Ubuntu
  • Health check endpoint для мониторинга

Установка

  1. Клонируйте репозиторий:
git clone <repository-url>
cd gitHookCatcher
  1. Установите зависимости:
npm install
  1. Настройте конфигурацию: Скопируйте 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 Webhooks

  1. Перейдите в настройки вашего репозитория на GitHub
  2. Выберите Settings → Webhooks → Add webhook
  3. Укажите URL вашего сервера: http://your-server:3000/webhook/repo1
  4. Content type: application/json
  5. Выберите события, которые будут отправлять вебхуки (обычно "Just the push event")
  6. Сохраните вебхук

Запуск

Ручной запуск:

npm start

Запуск с PM2 (рекомендуется для production):

  1. Установите PM2 глобально (если еще не установлен):
npm install -g pm2
  1. Создайте директорию для логов:
mkdir -p logs
  1. Запустите сервер через PM2:
pm2 start ecosystem.config.js
  1. Сохраните конфигурацию PM2 для автозапуска:
pm2 save
pm2 startup

Управление через PM2

# Просмотр статуса
pm2 status

# Просмотр логов
pm2 logs githook-catcher

# Перезапуск
pm2 restart githook-catcher

# Остановка
pm2 stop githook-catcher

# Удаление из PM2
pm2 delete githook-catcher

Health Check

Проверка работоспособности сервера:

curl http://localhost:3000/health

Структура проекта

gitHookCatcher/
├── 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

Troubleshooting

  1. Ошибка "Repository path does not exist"

    • Проверьте правильность путей в config.json
    • Убедитесь, что пути абсолютные
  2. Ошибка при выполнении git pull

    • Проверьте права доступа к репозиторию
    • Убедитесь, что репозиторий является git репозиторием
    • Проверьте, что указанная ветка существует
  3. Вебхук не приходит

    • Проверьте, что сервер доступен из интернета
    • Проверьте логи PM2: pm2 logs githook-catcher
    • Проверьте настройки вебхука в GitHub

Лицензия

MIT

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors