Интеграция Tracker с Cloud Functions

В данном руководстве описана интеграция средств автоматизации Tracker с сервисом Cloud Functions на примере суммирования затраченного времени родительской задачи по всем дочерним подзадачам.

Чтобы настроить автоматическое обновление суммарного значения затраченного времени родительской задачи при изменении этой величины в любой из дочерних подзадач:

  1. Зарегистрируйте приложение.
  2. Получите токен доступа к приложению.
  3. Получите ID организации для доступа к API.
  4. Создайте функцию Cloud Functions.
  5. Настройте триггер.
  6. Протестируйте автоматическое обновление данных.

Перед началом работы

Примечание

Для прохождения сценария вам понадобятся учетные записи:

  • в Yandex Cloud с платежным аккаунтом;
  • в Tracker в организации, подключенной к сервису Яндекс 360 для бизнеса, и ролью не ниже organization-manager.admin.

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Биллинг убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

В стоимость поддержки инфраструктуры входит плата за использование функции (см. тарифы Cloud Functions);

Если созданные ресурсы вам больше не нужны, удалите их.

Зарегистрируйте приложение

  1. В браузере перейдите по адресу https://oauth.yandex.ru/client/new и авторизуйтесь под учетной записью в Tracker.
  2. В форме Создать приложение:
    1. В поле Название вашего сервиса введите название, например TimeUpdater;
    2. В разделе Платформы приложения активируйте Веб-сервисы и в поле Redirect URI введите адрес https://oauth.yandex.ru/verification_code;
    3. В разделе Доступ к данным в поле ввода начните печатать tracker, затем из выпадающего списка выберите:
      • Чтение из Трекера;
      • Запись в Трекер.
  3. Нажмите кнопку Создать приложение;
  4. Дождитесь загрузки страницы с информацией о приложении и скопируйте идентификатор приложения из поля ClientID.

Получите токен доступа к приложению

  1. В браузере перейдите по адресу:
    https://oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор_приложения> 
    
    Где значение параметра client_id — идентификатор приложения из поля ClientID со страницы информации о созданном в предыдущем пункте приложении.
  2. Дождитесь загрузки страницы и скопируйте токен.
  3. Сохраните токен — он понадобится при создании функции.

Получите ID организации для доступа к API

  1. Перейдите в Tracker. Нажмите кнопку Войти в Tracker.
  2. На правой панели нажмите кнопку Администрирование.
  3. В разделе Доступы и оплата нажмите Организации.
  4. В разделе Яндекс 360 для бизнеса скопируйте и сохраните идентификатор организации — он понадобится при создании функции.

Создайте функцию Cloud Functions

  1. Перейдите в консоль управления.
  2. В левом верхнем углу нажмите кнопку  Все сервисы.
  3. Выберите Бессерверные вычисленияCloud Functions.
  4. Нажмите кнопку Создать функцию.
  5. Укажите название функции, например timeupdater.
  6. Нажмите кнопку Создать.
  7. В открывшемся окне Редактор выберите среду выполнения Python / 3.9.
  8. Нажмите кнопку Продолжить.
  9. В поле Способ нажмите кнопку ZIP-архив.
  10. Прикрепите тестовый архив.
  11. В поле Точка входа укажите index.handler.
  12. В разделе Параметры в поле Переменные окружения добавьте:
    • ORG — идентификатор организации Яндекс 360 для бизнеса.
    • TOKEN — токен доступа к приложению.
  13. Нажмите кнопку Сохранить изменения.
  14. Дождитесь загрузки страницы и в поле Ссылка для вызова скопируйте и сохраните ссылку для вызова функции.
    Пример ссылки:
    https://functions.yandexcloud.net/d4e94uav3108********
    
  15. Активируйте опцию Публичная функция.

Настройте триггер

Создайте очередь

  1. На панели слева выберите  ОчередиСоздать очередь.
  2. Выберите шаблон очереди, например Базовая разработка.
  3. Задайте имя, например Function Test.
  4. Нажмите кнопку Создать.

Создайте триггер

  1. На странице очереди в правом верхнем углу нажмите  Настройки очереди.
  2. На панели слева выберите АвтоматизацияТриггеры и нажмите кнопку Создать триггер.
  3. В поле Название введите название триггера, например timeupdater.
  4. В разделе Условия срабатывания выберите Учёт Времени → Затрачено времени.
  5. В разделе Действия триггера выберите HTTP-запрос.
  6. В открывшейся форме в поле Адрес введите:
    https://functions.yandexcloud.net/<идентификатор_функции>?id={{issue.key}}
    
    Где https://functions.yandexcloud.net/<идентификатор_функции> — ссылка для вызова функции, которую вы сохранили при создании функции.
    Пример:
    https://functions.yandexcloud.net/d4e94uav3108********?id={{issue.key}}
    
  7. Нажмите кнопку Создать.

Протестируйте автоматическое обновление данных

Создайте задачи

  1. Создайте родительскую задачу, для которой будет суммироваться затраченное время подзадач:
    1. На странице очереди Function Test нажмите кнопку Создать задачу.
    2. В открывшейся форме в поле Название задачи введите название задачи, например Parent Task.
    3. Нажмите кнопку Создать.
  2. Создайте подзадачи:
    1. На странице задачи Parent Task в правом верхнем углу в меню Действия выберите Добавить подзадачу.
    2. В открывшейся форме в поле Название задачи введите название подзадачи, например Subtask-1.
    3. Аналогичным образом создайте еще одну или несколько подзадач с названиями Subtask-2, Subtask-3.

Внесите данные о затраченном времени в подзадачах

  1. На странице подзадачи Subtask-1 в правом верхнем углу в меню Действия выберите Указать затраченное время.
  2. В открывшемся окне в поле Затрачено времени укажите любое время, например 1h25m.
  3. Аналогичным образом добавьте затраченное время в других подзадачах.

Убедитесь в корректной работе функции

  1. Перейдите на страницу задачи Parent Task.
  2. Убедитесь, что в блоке параметров задачи в разделе Учёт Времени в поле Затрачено времени учтено указанное в подзадаче время.

Как удалить созданные ресурсы

Чтобы перестать платить за созданные ресурсы, удалите функцию Cloud Functions.