Интеграция Azure DevOps с PanDev Metrics
import IdealImage from "@theme/IdealImage"; import Head from "@docusaurus/Head";
Кратко. Гайд подключает Azure DevOps к PanDev Metrics примерно за 10 минут. Вы создадите Personal Access Token (PAT) со scope'ами Code, Build и Work Items, вставите его в PanDev Metrics, выберете проекты и убедитесь, что webhook'и pull request, pipeline и Boards приходят. Аудитория: администратор.
Что понадобится
- Версия PanDev Metrics ≥ 1.0.250 (Cloud — всегда)
- Доступ администратора к воркспейсу PanDev Metrics
- Пользователь Azure DevOps (желательно сервисный аккаунт) с правами Project Administrator на нужных проектах
- Для on-prem PanDev Metrics: исходящий 443 к
dev.azure.comили к вашему хосту Azure DevOps Server - Чтобы Azure DevOps достучался до on-prem PanDev Metrics: хост PanDev Metrics должен быть доступен из Azure DevOps по публичному webhook URL
:::tip Используйте сервисный аккаунт
Создайте пользователя Microsoft Entra ID под PanDev Metrics (например, pandev-metrics-bot@acme.onmicrosoft.com) и добавьте его в нужную организацию Azure DevOps. Автоматические комментарии к PR будут отделены от человеческих.
:::
Шаг 1 — Создайте Personal Access Token в Azure DevOps
- Войдите в Azure DevOps под сервисным аккаунтом.
- Нажмите на иконку пользователя справа сверху и выберите Personal access tokens.
- Нажмите New Token и настройте:
| Поле | Значение |
|---|---|
| Name | pandev-metrics |
| Organization | Ваша организация (или All accessible organizations) |
| Expiration | Custom — рекомендуется 1 год |
| Scopes | Custom defined (см. ниже) |
- В Custom defined включите следующие scope'ы:
| Scope | Уровень | Зачем |
|---|---|---|
| Code | Read | Чтение коммитов, веток, файлов для анализа |
| Pull Request Threads | Read & write | Чтение метаданных PR; публикация комментариев с метриками |
| Build | Read | Чтение pipeline-запусков для метрик deployment frequency |
| Work Items | Read | Связь рабочих элементов Boards с коммитами и PR |
- Нажмите Create и сохраните токен — Azure DevOps показывает его только один раз.
:::warning Сохраните токен сразу Токен отображается только один раз. Если закрыть диалог без копирования — придётся создавать новый. :::
Шаг 2 — Откройте экран интеграции Azure DevOps в PanDev Metrics
Войдите в PanDev Metrics как администратор воркспейса и откройте Настройки → Интеграции → Azure DevOps.
Шаг 3 — Введите URL организации и PAT
Заполните форму:
| Поле | Значение |
|---|---|
| Organization URL | https://dev.azure.com/<ваша-организация> для Services; https://azuredevops.acme.example/<ваша-коллекция> для Server |
| Personal access token | Значение из Шага 1 |
Нажмите Проверить подключение. PanDev Metrics вызовет API Azure DevOps и покажет аутентифицированного пользователя и число доступных проектов.
После успешной проверки нажмите Активировать.
Шаг 4 — Выберите проекты для мониторинга
PanDev Metrics покажет список проектов Azure DevOps, доступных по PAT. Выберите нужные и сохраните.
PanDev Metrics запустит одноразовый backfill за последние 30 дней по коммитам, pull request'ам и pipeline-запускам.
Шаг 5 — Проверьте регистрацию webhook'ов
PanDev Metrics регистрирует service hooks в Azure DevOps автоматически по каждому выбранному проекту. Проверить можно в Project settings → Service hooks на стороне Azure DevOps — должны быть хуки, указывающие на ingest-URL PanDev Metrics.
Для справки — PanDev Metrics обрабатывает следующие endpoints (URL'ы заполняются автоматически при активации):
| Событие | Endpoint PanDev Metrics (информационно) |
|---|---|
| Жизненный цикл репозитория / проекта | /v1/azure/webhook/project |
| События pull request | /v1/azure/webhook/merge-request |
| События work item в Azure Boards | /v1/azure/webhook/boards |
Последние доставки должны отдавать HTTP 200 в течение секунд.
Проверка
Откройте Настройки → Интеграции → Azure DevOps в PanDev Metrics. Вы увидите:
- Зелёный бейдж Подключено
- Количество выбранных проектов
- Время последней синхронизации (не старше 30 минут после завершения backfill)
Затем откройте дашборд с DORA-метриками — в течение ~15 минут плитки deployment frequency и PR cycle time покажут данные из Azure DevOps. Отфильтруйте Lead Time по вашему Azure-проекту, чтобы убедиться, что Boards work items связаны с коммитами.
Решение проблем
«Проверить подключение» возвращает «TF400813» или `401 Unauthorized`
PAT невалиден, просрочен или выпущен для другой организации. Пересоздайте PAT (Шаг 1) и убедитесь, что Organization совпадает с той, которую вы подключаете из PanDev Metrics. Если PAT выпущен на All accessible organizations — сервисный аккаунт должен состоять в каждой такой организации.
Service hooks зарегистрированы, но события Boards не приходят
У PAT нет scope'а Work Items: Read. Пересоздайте PAT с этим scope'ом и обновите в Настройки → Интеграции → Azure DevOps → Расширенные → Обновить токен. События Boards возобновятся в течение минут.
Pipeline-запуски пропадают на части проектов
У PAT нет scope'а Build: Read, либо у сервисного аккаунта нет права View build pipeline на этих проектах. Добавьте пользователя в группу безопасности с правом на чтение сборок (например, Build Administrators на уровне проекта).
Комментарии в PR не появляются
У PAT нет Pull Request Threads: Read & write, либо отключена опция Публикация комментариев в PR в PanDev Metrics. Откройте Настройки → Интеграции → Azure DevOps → Расширенные и проверьте оба пункта. Также проверьте, что нужный проект не исключён.
Azure DevOps Server отвечает 404 на API-запрос
Для Server в Organization URL должна быть указана коллекция: https://azuredevops.acme.example/DefaultCollection. Без сегмента коллекции REST API отдаёт 404. Поправьте URL в Настройки → Интеграции → Azure DevOps.
Что собирается
PanDev Metrics получает из каждого выбранного проекта:
- Коммиты (SHA, автор, время, сообщение, статистика файлов) из Azure Repos
- Pull request'ы (active / completed / abandoned) и их ревью, комментарии и approvals
- Pipeline-запуски (build и release) — время старта, конца, результат, окружение
- Work item'ы, связанные с коммитами и PR (из Azure Boards)
Исходный код не сохраняется. Подробнее — в Как работает плагин.
FAQ
Boards-задачи подхватываются автоматически?
Да — если PAT включает Work Items: Read, PanDev Metrics связывает элементы Boards с коммитами и PR по стандартному упоминанию #1234 в сообщениях коммитов и описаниях PR. Подробный гайд по Boards — Azure Boards как трекер задач.
Какой минимальный набор scope'ов PAT?
Для аналитики только по репозиториям: Code: Read и Pull Request Threads: Read & write. Для DORA-метрик deployment frequency из pipeline: добавьте Build: Read. Для связи с Boards: добавьте Work Items: Read. Стандартная настройка PanDev Metrics включает все четыре.
Работает ли PanDev Metrics с Azure DevOps Server?
Да. Тот же flow с PAT работает на Azure DevOps Server. Organization URL должен включать коллекцию (например, https://azuredevops.acme.example/DefaultCollection). Для on-prem PanDev Metrics нужен сетевой доступ от хоста PanDev Metrics к хосту Azure DevOps Server по 443 порту.
Как часто обновляются данные?
Service hooks доставляют события pull request, pipeline и work item в реальном времени — обычно за секунды. Дополнительно раз в 15 минут PanDev Metrics запускает reconciliation-опрос, чтобы подобрать пропущенные доставки.
Сколько занимает первичный backfill?
Backfill последних 30 дней. Для 10 проектов — обычно 5-15 минут. Большие организации с большим числом pipeline-запусков — час и больше.
Можно ли ротировать PAT без переустановки?
Да. Сгенерируйте новый PAT с теми же scope'ами в Azure DevOps, затем откройте Настройки → Интеграции → Azure DevOps → Расширенные → Обновить токен в PanDev Metrics. Service hooks остаются зарегистрированными, backfill не пересчитывается.
Можно ли ограничить интеграцию конкретными проектами?
Да. После активации в любой момент снимите выбор с лишних проектов на экране интеграции. PanDev Metrics удалит регистрации service hooks с них в течение минут.
Дальнейшие шаги
- Подключите Azure Boards как трекер задач — отдельная настройка Boards
- Установите JetBrains-плагин — метрики прямо в IDE
- Сети и порты on-prem — правила egress для self-hosted PanDev Metrics
Связанные материалы
- How-to: Интеграция GitHub
- How-to: Интеграция GitLab
- How-to: Интеграция Bitbucket