Интеграция Трекера с Cloud Functions
В этом руководстве вы настроите интеграцию Трекера с Cloud Functions для переноса записей о затраченном времени из подзадач в родительскую задачу.
При срабатывании триггера функция добавляет в родительскую задачу последнюю запись о затраченном времени из подзадачи.
Ограничения примера
Функция не пересчитывает сумму трудозатрат по всем подзадачам. Изменения и удаления существующих записей не синхронизируются. Повторный вызов функции для той же записи может добавить дубликат в родительскую задачу.
Чтобы настроить перенос записей:
- Зарегистрируйте OAuth-приложение и получите токен
- Получите ID организации для доступа к API
- Создайте функцию Cloud Functions
- Настройте триггер
- Протестируйте автоматическое обновление данных
Перед началом работы
Сценарий рассчитан на внешний Трекер с организацией Яндекс 360 для бизнеса. Для организаций Yandex Cloud и внутреннего Трекера потребуется адаптировать код функции.
Для прохождения сценария вам понадобятся учетные записи:
- в Yandex Cloud с платежным аккаунтом и ролью не ниже
organization-manager.admin; - в Трекере с организацией Яндекс 360 для бизнеса.
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
- На странице Биллинг убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит плата за использование функции (см. тарифы Cloud Functions);
Если созданные ресурсы вам больше не нужны, удалите их.
Зарегистрируйте OAuth-приложение и получите токен
Зарегистрируйте OAuth-приложение и получите токен по инструкции по доступу к API Трекера. Сохраните токен — он понадобится при создании функции.
Получите ID организации для доступа к API
- Перейдите в Трекер. Нажмите кнопку Войти в Трекер.
- Чтобы узнать идентификатор организации, перейдите на страницу Администрирование → Организации и скопируйте значение поля идентификатор.
- Скопируйте и сохраните идентификатор организации — он понадобится при создании функции.
Создайте функцию Cloud Functions
- Перейдите в консоль управления.
- В левом верхнем углу нажмите кнопку
Все сервисы. - Выберите Бессерверные вычисления → Cloud Functions.
- Нажмите кнопку Создать функцию.
- Укажите название функции, например
timeupdater. - Нажмите кнопку Создать.
- В открывшемся окне Редактор выберите среду выполнения
Python / 3.12. - Нажмите кнопку Продолжить.
- В поле Способ нажмите кнопку ZIP-архив.
- Прикрепите тестовый архив.
- В поле Точка входа укажите
index.handler. - В разделе Параметры в поле Переменные окружения добавьте:
ORG— идентификатор организации Яндекс 360 для бизнеса.TOKEN— токен доступа к приложению.
- Нажмите кнопку Сохранить изменения.
- Дождитесь загрузки страницы и в поле Ссылка для вызова скопируйте и сохраните ссылку для вызова функции.
Пример ссылки:https://functions.yandexcloud.net/d4e94uav3108******** - Активируйте опцию Публичная функция.
Настройте триггер
Создайте очередь
- На панели слева нажмите Очереди → Создать очередь.
- Выберите шаблон очереди, например Базовая разработка.
- Задайте имя, например
Function Test. - Нажмите кнопку Создать.
Создайте триггер
-
На странице очереди в правом верхнем углу нажмите Настройки очереди.
-
На панели слева выберите Автоматизация → Триггеры и нажмите кнопку Создать триггер.
-
В поле Название введите название триггера, например
timeupdater. -
В разделе Условия срабатывания выберите Учёт Времени → Затрачено времени и укажите операцию сравнения Значение поля изменилось.
-
В разделе Действия триггера выберите HTTP-запрос.
-
В открывшейся форме выберите метод запроса
POST.Функция из тестового архива также поддерживает метод
GET. -
В поле Адрес введите:
https://functions.yandexcloud.net/<идентификатор_функции>?id={{issue.key}}Где
https://functions.yandexcloud.net/<идентификатор_функции>— ссылка для вызова функции, которую вы сохранили при создании функции.
Пример:https://functions.yandexcloud.net/d4e94uav3108********?id={{issue.key}} -
Нажмите кнопку Создать.
Протестируйте автоматическое обновление данных
Создайте задачи
- Создайте родительскую задачу, в которую будут добавляться записи о затраченном времени из подзадач:
- На странице очереди
Function Testнажмите кнопку Создать задачу. - В открывшейся форме в поле Название задачи введите название задачи, например
Parent Task. - Нажмите кнопку Создать.
- На странице очереди
- Создайте подзадачи:
- На странице задачи
Parent Taskв правом верхнем углу в меню выберите Добавить подзадачу. - В открывшейся форме в поле Название задачи введите название подзадачи, например
Subtask-1. - Аналогичным образом создайте еще одну или несколько подзадач с названиями
Subtask-2,Subtask-3.
- На странице задачи
Внесите данные о затраченном времени в подзадачах
- На странице подзадачи
Subtask-1в правом верхнем углу в меню выберите Указать затраченное время. - В открывшемся окне в поле Затрачено времени укажите любое время, например
1h25m. - Аналогичным образом добавьте затраченное время в других подзадачах.
Убедитесь в корректной работе функции
- Перейдите на страницу задачи
Parent Task. - Убедитесь, что в блоке параметров задачи в разделе Учёт Времени в поле Затрачено времени учтено указанное в подзадаче время.
Как удалить созданные ресурсы
Чтобы перестать платить за созданные ресурсы, удалите функцию Cloud Functions.