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

  1. Создание вебхуков в проекте
  2. Описание вебхуков