Интеграция Tracker с Cloud Functions
В данном руководстве описана интеграция средств автоматизации Tracker с сервисом Cloud Functions на примере суммирования затраченного времени родительской задачи по всем дочерним подзадачам.
Чтобы настроить автоматическое обновление суммарного значения затраченного времени родительской задачи при изменении этой величины в любой из дочерних подзадач:
- Зарегистрируйте приложение.
- Получите токен доступа к приложению.
- Получите ID организации для доступа к API.
- Создайте функцию Cloud Functions.
- Настройте триггер.
- Протестируйте автоматическое обновление данных.
Перед началом работы
Примечание
Для прохождения сценария вам понадобятся учетные записи:
- в Yandex Cloud с платежным аккаунтом;
- в Tracker в организации, подключенной к сервису Яндекс 360 для бизнеса, и ролью не ниже
organization-manager.admin
.
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVE
илиTRIAL_ACTIVE
. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит плата за использование функции (см. тарифы Yandex Cloud Functions);
Если созданные ресурсы вам больше не нужны, удалите их.
Зарегистрируйте приложение
- В браузере перейдите по адресу
https://oauth.yandex.ru/client/new
и авторизуйтесь под учетной записью в Tracker. - В форме Создать приложение:
- В поле Название вашего сервиса введите название, например
TimeUpdater
; - В разделе Платформы приложения активируйте Веб-сервисы и в поле Redirect URI введите адрес
https://oauth.yandex.ru/verification_code
; - В разделе Доступ к данным в поле ввода начните печатать
tracker
, затем из выпадающего списка выберите:Чтение из Трекера
;Запись в Трекер
.
- В поле Название вашего сервиса введите название, например
- Нажмите кнопку Создать приложение;
- Дождитесь загрузки страницы с информацией о приложении и скопируйте идентификатор приложения из поля ClientID.
Получите токен доступа к приложению
- В браузере перейдите по адресу:
https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения>
client_id
— идентификатор приложения из поля ClientID со страницы информации о созданном в предыдущем пункте приложении. - Дождитесь загрузки страницы и скопируйте токен.
- Сохраните токен — он понадобится при создании функции.
Получите ID организации для доступа к API
- Перейдите в Tracker
. Нажмите кнопку Войти в Tracker. - На правой панели нажмите кнопку Администрирование.
- В разделе Доступы и оплата нажмите Организации.
- В блоке Яндекс 360 для бизнеса скопируйте и сохраните идентификатор организации — он понадобится при создании функции.
Создайте функцию Cloud Functions
- Перейдите в консоль управления
. - В левом верхнем углу нажмите кнопку
Все сервисы. - Выберите Бессерверные вычисления → Cloud Functions.
- Нажмите кнопку Создать функцию.
- Укажите название функции, например
timeupdater
. - Нажмите кнопку Создать.
- В открывшемся окне Редактор выберите среду выполнения
Python / 3.9
. - Нажмите кнопку Продолжить.
- В поле Способ нажмите кнопку ZIP-архив.
- Прикрепите тестовый архив
. - В поле Точка входа укажите
index.handler
. - В разделе Параметры в поле Переменные окружения добавьте:
ORG
— идентификатор организации Яндекс 360 для бизнеса.TOKEN
— токен доступа к приложению.
- Нажмите кнопку Сохранить изменения.
- Дождитесь загрузки страницы и в поле Ссылка для вызова скопируйте и сохраните ссылку для вызова функции.
Пример ссылки:https://functions.yandexcloud.net/d4e94uav3108********
- Активируйте опцию Публичная функция.
Настройте триггер
Создайте очередь
- На панели слева выберите
Очереди → Создать очередь. - Выберите шаблон очереди, например Базовая разработка.
- Задайте имя, например
Function Test
. - Нажмите кнопку Создать.
Создайте триггер
- На странице очереди в правом верхнем углу нажмите
Настройки очереди. - На панели слева выберите Автоматизация → Триггеры и нажмите кнопку Создать триггер.
- В поле Название введите название триггера, например
timeupdater
. - В блоке Условия срабатывания выберите Учёт времени → Затрачено времени.
- В блоке Действия триггера выберите HTTP-запрос.
- В открывшейся форме в поле Адрес введите:
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.