Назад | Перейти на главную страницу

Обслуживание файлов из GIT с помощью uWSGI

Доброе утро всем!

В моей повседневной работе мы используем NGINX + uWSGI + MongoDB в качестве контейнера приложения Python. Для управления версиями и совместной разработки мы используем установку GIT на каждом компьютере разработчика и центральный репозиторий GIT для доставки.

Все работает нормально, НО есть одна небольшая проблема.

До сих пор, когда мы хотим выпустить новую версию нашего внутреннего программного обеспечения, все разработчики объединяют свои изменения, а затем один из них (обычно менеджер проекта) помещает окончательный продукт в репозиторий «master Branch» на нашем центральном сервере GIT.

После того, как это нажатие сделано, сценарий, который постоянно ищет GIT, извлекает новую версию и отправляет ее на наш сервер uWSGI, который затем загружает новую версию для всех новых подключений.

Теперь нам интересно, как получить возможность отправлять запросы на сервер GIT и что uWSGI напрямую загружает и обслуживает свои веб-приложения с этого сервера GIT.

Есть ли у кого-нибудь такое решение или конфигурация uWSGI?

Уловка, которую я использую с веб-сайтом моей компании (он создается из репозитория github), добавляет эти параметры в uWSGI:

; reload the server everytime the repository is updated
touch-reload = .git/index
; every minute pull from the repository
cron = -1 -1 -1 -1 -1 git pull

ваш серверный git-repo - это то, с чем вы бы не работали; вы всегда будете зависеть от локального репо-клона, полученного из этого центрального git-репо (IMHO). что вы можете сделать, чтобы избавиться от уродливых cronjobs: используйте git's pre / post-receive-hook на вашем git-сервере:

В дополнение к обработчикам на стороне клиента вы можете использовать пару важных обработчиков на стороне сервера в качестве системного администратора, чтобы обеспечить соблюдение почти любой политики для вашего проекта. Эти сценарии выполняются до и после отправки на сервер. Предварительные хуки могут выйти из ненулевого значения в любое время, чтобы отклонить push, а также вернуть клиенту сообщение об ошибке; вы можете настроить любую сложную политику push-уведомлений.

есть также информативный stackoverflow-обсуждение о git-post-receive-hook для размещения веб-сайтов; особенно проверьте первую ссылку из верхнего ответа git-website-howto