Скрип для автоматического пулинга кода из gitlab через вебхуки. Для использования в коде необходимо поправить следующие переменные:
- private_token - указываем сам токен для доступа к гитлабу, либо берем из env (private_token = os.environ["GITLAB_TOKEN"])
- gitlab_url = 'gitlab.example.com' # адрес гитлаба
- repo_path = 'devops/example.git' # адрес репы
- project_id = '105' # ID проекта в GitLab
- branch='master' # имя ветки
ID проекта можно найти в admin area проекта, например, https://gitlab.example.com/admin/projects/devops/example
Скрипт поднимает listener на порту 5000 по локейшену /webhook и ждет GET, PUSH или POST запрос от гитлаба. В проекте необходимо создать вебхук, который будет стучаться по адресу http://адрес_сервиса:5000/webhook и указать по каким событиям дергать вебхук (например, пуши и PR). Скрипт при запуске делает git clone указанной ветки указанного репозитория, после этого переходит в режим прослушивания порта. Если поступает запрос на порт 5000, он получает хэш последнего коммита в удаленном репо и сравнивает с последним коммитом в локальной репе. Если хэши не совпадают, делается git pull.
Список зависимостей для работы скрипта:
- git
- python3
pip:
- flask
- gitpython
- requests
- PyGithub