GitFlic + EvaProject
Подготовка и настройка
Для создания связи вашего проекта GitFlic с EvaProject необходимо настроить прием вебхуков на стороне EvaProject с последующей обработкой входящих вебхуков по событиям в вашем проекте GitFlic.
Сперва понадобится собрать данные, необходимые для корректной доставки вебхуков из GitFlic. Воспользуйтесь документацией EvaProject, чтобы узнать, где создать код для работы с вебхуками, а также как создать токен, который необходимо использовать при отправке вебхуков.
Страница с документацией EvaProject доступна по ссылке
Шаблон для ссылки, куда необходимо отправлять вебхук:
https://<domain>/pub/webhook?name=<id>&token=<token>
Поле | Тип | Описание |
---|---|---|
domain |
String | Домен, на котором находится EvaProject |
id |
String | Код вебхука, можно посмотреть в списке вебхуков или в окне с настройками вебхука |
token |
String | Токен, необходимый для подписи вебхуков |
Пример скрипта:
Скрипт с типом bzPython
меняет статус задачи в зависимости от статуса запроса на слияние. Связь настроена на имя запроса на слияние.
Статус ЗнС во входящем вебхуке GitFlic | Статус задачи EvaProject |
---|---|
MERGE_REQUEST_CREATE или MERGE_REQUEST_UPDATE |
in review |
MERGE_REQUEST_CANCEL или MERGE_REQUEST_CLOSE |
fail |
MERGE |
closed |
data = json.loads(my_json)
tasks = models.CmfTask.list()
for task in tasks:
# поиск задачи (название ветки должно совпадать с именем задачи)
if (task.name == data['merge_request']['source_branch']):
# обработка создания merge-request
if (data['action'] == 'MERGE_REQUEST_CREATE'):
status = 'in_review'
# обработка обновления merge-request
elif (data['action'] == 'MERGE_REQUEST_UPDATE'):
status = 'in_review'
# обработка отмены merge-request
elif (data['action'] == 'MERGE_REQUEST_CANCEL'):
status = 'fail'
# обработка закрытия merge-request
elif (data['action'] == 'MERGE_REQUEST_CLOSE'):
status = 'fail'
# обработка слияния merge-request
elif (data['action'] == 'MERGE'):
status = 'closed'
else:
status = 'open'
# сохранение задачи
task.status = task.workflow.get_default_status(status_code=status)
task.save()
Ознакомьтесь со статьями по работе с вебхуками Gitflic