Интеграция Трекера с Cloud Functions
В данном руководстве описана интеграция средств автоматизации Трекера с сервисом Cloud Functions на примере суммирования затраченного времени родительской задачи по всем дочерним подзадачам.
Чтобы настроить автоматическое обновление суммарного значения затраченного времени родительской задачи при изменении этой величины в любой из дочерних подзадач:
- Зарегистрируйте приложение
- Зарегистрируйте OAuth-приложение и получите токен
- Получите ID организации для доступа к API
- Создайте функцию Cloud Functions
- Настройте триггер
- Протестируйте автоматическое обновление данных
Перед началом работы
Для прохождения сценария вам понадобятся учетные записи:
- в Yandex Cloud с платежным аккаунтом;
- В Трекере в организации, подключенной к сервису Yandex Cloud, и ролью не ниже
organization-manager.admin.
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
- На странице Биллинг убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе
ACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры входит плата за использование функции (см. тарифы Cloud Functions);
Если созданные ресурсы вам больше не нужны, удалите их.
Зарегистрируйте OAuth-приложение и получите токен
Если вы используете федеративный или сервисный аккаунт, авторизуйтесь с помощью IAM-токена.
Чтобы получить токен:
-
Перейдите по ссылке https://oauth.yandex.ru.
-
На странице Ваши приложения нажмите Создать.
-
В открывшемся окне выберите вариант Для доступа к API или отладки и нажмите Перейти к созданию.
-
Укажите название приложения и почту для связи.
-
Добавьте разрешения для доступа к данным пользователя. Чтобы выбрать разрешение, начните вводить его название в поле Название доступа:
- Запись в трекер (tracker:write) — все операции с данными: создание, удаление, редактирование.
- Чтение из трекера (tracker:read) — только чтение данных.
-
Нажмите Создать приложение.
-
В личном кабинете Яндекс OAuth выберите созданное ранее приложение и скопируйте его идентификатор из поля ClientID.
-
Сформируйте ссылку для запроса токена:
https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения> -
Войдите в аккаунт, от имени которого вы будете работать с API, и перейдите по сформированной ссылке.
На странице появится последовательность символов — это OAuth-токен. Скопируйте его и сохраните.
Чтобы проверить наличие доступа к API, выполните запрос информации о текущем пользователе. Если доступ не был получен, запрос вернет ответ с кодом 401 Unauthorized.
Пример запроса информации о текущем пользователе с помощью curl:
curl -X GET 'https://api.tracker.yandex.net/v3/myself' \
-H 'Authorization: OAuth y0__xAbc******' \
-H 'X-Org-ID: 1234******'
curl -X GET "https://api.tracker.yandex.net/v3/myself" ^
-H "Authorization: OAuth y0__xAbc******" ^
-H "X-Org-ID: 1234******"
Получите ID организации для доступа к API
- Перейдите в Трекер. Нажмите кнопку Войти в Трекер.
-
Чтобы узнать идентификатор организации, перейдите на страницу Администрирование → Организации и скопируйте значение поля идентификатор.
- Скопируйте и сохраните идентификатор организации — он понадобится при создании функции.
Создайте функцию 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.