Skip to content

Интеграция с Azure Boards

Новое в 2026.5.1

Интеграция с Azure DevOps Boards позволяет экспортировать дефекты из Vampy в work items Azure DevOps, синхронизировать статусы и комментарии в обе стороны.

Для интеграции с репозиториями Azure Repos (VCS) см. отдельную статью.

Personal Access Token (PAT)

Создайте PAT в Azure DevOps: User settings → Personal access tokens → New Token.

Минимально необходимые права:

  • Member Entitlement Management — Read
  • Work Items — Read & write
Скриншоты настройки Scopes в PAT

Документация Microsoft: Use personal access tokens.

Настройка интеграции в Vampy

Настройка выполняется в мастере по шагам.

  1. Войдите в платформу как администратор.
  2. Перейдите в Администратор → Интеграции и откройте Azure Boards (карточка на странице интеграций или пункт в меню слева).
  3. Нажмите + Подключить (или откройте существующую интеграцию для редактирования).

Шаг 1 — подключение

Укажите:

  • Имя подключения — произвольное имя интеграции
  • URL — адрес организации Azure DevOps, например https://dev.azure.com/my_organization
  • Токен — Personal Access Token (PAT), см. раздел выше

При необходимости в Дополнительных опциях задайте CA-сертификаты или включите игнорирование проверки SSL-сертификата.

Нажмите Далее.

Шаг 2 — проект и тип work item

Выберите:

  • Проект — проект Azure DevOps, куда будут создаваться задачи
  • Тип задачи — тип work item (например, Issue, Bug)

Для обратной синхронизации включите:

  • Синхронизация статусов — изменения статуса work item в Azure DevOps отражаются в Vampy
  • Синхронизация комментариев — комментарии синхронизируются в обе стороны

Чтобы обратная синхронизация работала, администратор Azure DevOps должен настроить Service Hooks (см. раздел Service Hooks ниже). Без вебхука Vampy сможет создавать work items, но не получать обновления из ADO.

На этом же шаге в блоке Шаблоны трекера задач можно включить Использовать свой шаблон, чтобы выбрать шаблоны заголовка и описания work item. Если переключатель выключен, используются шаблоны по умолчанию.

Нажмите Далее.

Шаг 3 — сопоставление статусов

Шаг отображается, если включена Синхронизация статусов.

Сопоставьте статусы Azure Boards со статусами Vampy. Для обратной синхронизации нужно сопоставить хотя бы один статус.

Нажмите Далее.

Шаг 4 — внешние источники значений полей

Новое в 2026.10.1

Шаг отображается, если у выбранного типа work item есть поля, для которых можно подключить внешний источник. Подробнее - в разделе Внешние источники значений полей.

Шаг 5 — шаблоны трекера задач

Новое в 2026.10.1

Шаг отображается, если на шаге 2 включено Использовать свой шаблон. Выберите шаблоны для отдельных и объединённых задач, см. Шаблоны задач.

Шаг 6 — значения полей по умолчанию

Заполняйте поля только если нужны предзаполненные значения для экспорта (State, Priority, Assigned To, Tags и т.д.) — и обязательные, и необязательные в настройке можно оставить пустыми. При отправке каждой задачи из Vampy те же поля задаются или меняются в форме перед созданием work item в Azure Boards.

Нажмите Сохранить.

Интеграция появится в списке Интеграции Azure Boards. Нажмите Copy webhook, чтобы скопировать URL вебхука Vampy — он понадобится при настройке Service Hooks в Azure DevOps.

Внешние источники значений полей

Новое в 2026.10.1

Если варианты для поля work item хранятся не в Azure DevOps, а во внутреннем справочнике компании (классификатор продуктов, бизнес-цели, сотрудники), Vampy может брать значения из HTTP API этого справочника. При отправке дефекта в Azure Boards пользователь выбирает значение из списка, который Vampy получает из справочника, а в work item записывается значение по заданному правилу.

Настройка

Откройте интеграцию на редактирование и перейдите к шагу Внешние источники значений полей.

  1. Включите Внешние источники значений полей.
  2. Выберите Способ аутентификации, с которым Vampy обращается к справочнику:

    • Использовать аутентификацию интеграции - тот же токен, что у интеграции с Azure DevOps;
    • Использовать отдельный токен - укажите токен в поле Токен;
    • Без аутентификации.

    Токен передаётся в заголовке Authorization: Bearer <токен>.

  3. В блоке Использовать внешние источники для включите нужные поля и для каждого заполните:

Настройка Что указать
URL Адрес API, который возвращает список значений. Для поиска по вводу пользователя добавьте в URL {search}, например https://dict.example.com/api/users?search={search}
Путь к полю отображаемого значения Поле элемента, которое показывается в списке выбора, например DisplayName
Путь к полю доступности Необязательно. Булево поле элемента: элементы со значением false в список не попадают, например IsActive
Отправляемые данные Значение поля - в work item уходит строка по шаблону из Путь к полю значения. Объект целиком - уходит выбранный элемент со всеми полями
Путь к полю значения Шаблон значения: имена полей элемента в фигурных скобках, например {AD_UserID} или {DisplayName} <{AD_UserID}>. Текст без фигурных скобок отправляется как есть: если указать AD_UserID без скобок, в work item уйдёт строка AD_UserID
  1. Нажмите Проверить в блоке примера значения. Vampy запросит источник с пустым {search} и покажет, какое значение будет отправлено в Azure Boards для первого элемента ответа.

Пример поля с поиском по вводу и составным значением:

Формат ответа справочника

Vampy отправляет в справочник GET-запрос. Справочник должен отвечать с заголовком Content-Type: application/json: массивом объектов или объектом, в котором массив лежит в ключе items, data или results. Пример:

[
  {"Product": "Платформа оплаты", "IsActive": true},
  {"Product": "Каталог заказов", "IsActive": true},
  {"Product": "Архивный контур", "IsActive": false}
]

Для такого ответа укажите Путь к полю отображаемого значения Product, Путь к полю доступности IsActive и Путь к полю значения {Product}.

Запросы к справочнику выполняет сервер Vampy, поэтому адрес должен быть доступен из сети, в которой работает платформа. Для HTTPS применяются те же настройки сертификатов, что у интеграции. Время ожидания ответа по умолчанию 10 секунд.

Настройка через переменные окружения

Внешние источники можно задать и без интерфейса, переменными окружения. Переменная применяется, только если у интеграции ещё ни разу не сохранялся шаг Внешние источники значений полей. После первого сохранения этого шага, даже с выключенным переключателем, используется настройка из интерфейса.

Переменная По умолчанию Назначение
TASK_TRACKER_EXTERNAL_DICT_CONFIG {} JSON с настройками источников, структура ниже
TASK_TRACKER_EXTERNAL_DICT_TOKEN не задана Токен для "auth": "EXTERNAL_TOKEN", если в интеграции отдельный токен не сохранён
TASK_TRACKER_EXTERNAL_DICT_TIMEOUT 10 Время ожидания ответа справочника, в секундах

Ключ верхнего уровня в JSON - название интеграции в Vampy, как в списке Интеграции Azure Boards, с теми же пробелами и регистром. Значение - способ аутентификации (INTEGRATION_TOKEN, EXTERNAL_TOKEN или NONE) и поля в формате reference name Azure DevOps:

{
  "Azure Boards Prod": {
    "auth": "INTEGRATION_TOKEN",
    "fields": {
      "System.AssignedTo": {
        "url": "https://dict.example.com/api/users?search={search}",
        "displayPath": "DisplayName",
        "valuePath": "{DisplayName} <{AD_UserID}>",
        "activePath": "IsActive"
      }
    }
  }
}

Обязательные ключи поля: url, displayPath, valuePath. Необязательные: activePath и wholeObject (true - аналог Объект целиком, по умолчанию false). Ключ auth тоже необязательный, по умолчанию INTEGRATION_TOKEN. Можно ли выбрать несколько значений, зависит от типа поля в Azure DevOps. Если JSON в переменной некорректный, настройка игнорируется целиком.

Переменные нужны сервисам engine и background: engine строит список значений в форме отправки, background выполняет экспорт в Azure Boards.

Docker Compose. Добавьте переменные в /opt/hw-vmp/config/env_vars.ini в секции [v_engine] и [v_background]. JSON записывается в одну строку:

[v_engine]
TASK_TRACKER_EXTERNAL_DICT_CONFIG={"Azure Boards Prod":{"auth":"INTEGRATION_TOKEN","fields":{"System.AssignedTo":{"url":"https://dict.example.com/api/users?search={search}","displayPath":"DisplayName","valuePath":"{DisplayName} <{AD_UserID}>","activePath":"IsActive"}}}}
TASK_TRACKER_EXTERNAL_DICT_TIMEOUT=10

[v_background]
TASK_TRACKER_EXTERNAL_DICT_CONFIG={"Azure Boards Prod":{"auth":"INTEGRATION_TOKEN","fields":{"System.AssignedTo":{"url":"https://dict.example.com/api/users?search={search}","displayPath":"DisplayName","valuePath":"{DisplayName} <{AD_UserID}>","activePath":"IsActive"}}}}
TASK_TRACKER_EXTERNAL_DICT_TIMEOUT=10

Если в файле уже есть эти секции, допишите строки в них. Примените конфигурацию:

/opt/hw-vmp/bin/reconfig

Kubernetes. Задайте переменные в параметре customEnvs в values Helm-чарта для vEngine и vBackground. Переменные из vBackground.customEnvs получают и поды разделённого background (vBackgroundSeparated).

vEngine:
  customEnvs:
    - name: TASK_TRACKER_EXTERNAL_DICT_CONFIG
      value: '{"Azure Boards Prod":{"auth":"INTEGRATION_TOKEN","fields":{"System.AssignedTo":{"url":"https://dict.example.com/api/users?search={search}","displayPath":"DisplayName","valuePath":"{DisplayName} <{AD_UserID}>","activePath":"IsActive"}}}}'
    - name: TASK_TRACKER_EXTERNAL_DICT_TIMEOUT
      value: "10"

vBackground:
  customEnvs:
    - name: TASK_TRACKER_EXTERNAL_DICT_CONFIG
      value: '{"Azure Boards Prod":{"auth":"INTEGRATION_TOKEN","fields":{"System.AssignedTo":{"url":"https://dict.example.com/api/users?search={search}","displayPath":"DisplayName","valuePath":"{DisplayName} <{AD_UserID}>","activePath":"IsActive"}}}}'
    - name: TASK_TRACKER_EXTERNAL_DICT_TIMEOUT
      value: "10"

Примените values через helm upgrade.

Service Hooks (вебхуки) для обратной синхронизации

Чтобы Vampy получал изменения статусов и комментариев по уже экспортированным work items, настройте Service Hook в настройках проекта Azure DevOps: Project Settings → Service hooks → Create subscription.

Шаг 1. Trigger — событие Work item updated.

Шаг 2. В блоке Filters для поля Field выберите [Any] (не указывайте конкретное поле). Так одной подпиской перехватываются и смена статуса, и добавление комментариев.

Остальные фильтры (Area path, Work item type, Tag) при необходимости тоже можно оставить [Any].

Шаг 3. Action — Post via HTTP. В поле URL вставьте webhook URL, скопированный из Vampy (Copy webhook в списке интеграций Azure Boards):

Шаг 4. Сохраните подписку. При необходимости используйте Test, чтобы проверить доставку на Vampy.

Документация Microsoft: Webhooks with Azure DevOps (настройка подписки Service Hooks → Web Hooks: Trigger, фильтры, URL). Список событий и полей payload — в Service hook events.

Экспорт дефектов в Azure Boards

После настройки интеграции дефекты можно отправить в Azure DevOps:

  1. Перейдите на страницу дефектов репозитория или продукта.
  2. Выберите один или несколько дефектов.
  3. В меню действий выберите Отправить в таск-трекер и укажите подключение Azure Boards.

Подробнее о форме экспорта и дополнительных действиях — в Отправка issue в таск-трекер.

Дефекты можно отправить:

  • По одному — для каждого дефекта будет создан отдельный work item;
  • Объединённо — несколько дефектов будут объединены в один work item.