Запуск Azure Pipelines на основе событий Azure Boards

Я рассматриваю возможность создания некоторой автоматизации на основе событий, происходящих на платах Azure DevOps. У меня есть базовая интеграция между GitHub и ADO, которая дает мне ссылки на коммит/PR на основе сообщения о коммите и заголовка PR, но этого недостаточно...

В конечном итоге я хочу прослушивать события, поступающие с моих досок (например, создание элемента, перемещение элемента и т. д.), и запускать конвейер Azure на основе указанного события со всеми данными, связанными с рабочим элементом, для дальнейшей обработки. Можно было бы подумать, что эти двое должны идеально подходить друг другу, но я не нашел простого решения, которое не требовало бы обращения к третьей стороне. Документы тоже не воздали этому должного... кто-нибудь сталкивался с этой проблемой раньше?

Мне кажется очень странным, что вебхук для Дженкинса существует, а прямого триггера для конвейера Azure нет, а не вебхук для действий GitHub. Я определенно что-то здесь упускаю.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
0
80
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать Общие триггеры на основе веб-перехватчиков для конвейеров YAML, чтобы запускать Azure Pipelines на основе событий Azure Boards.

Вот подробные шаги:

  1. Создайте подключение к службе «Входящий веб-перехватчик» в настройках проекта > Подключения к службе.

  2. Создайте веб-перехватчик Service Hook с событием, связанным с рабочим элементом, в настройках проекта > Service Hooks. В примере я выбираю событие создания рабочего элемента.

    URL-адрес запроса:

    "https://dev.azure.com/<ADO Organization>/_apis/public/distributedtask/webhooks/<WebHook Name>?api-version=6.0-preview"
    

    WebHook Name в URL-адресе — это тот, который вы установили при подключении к службе.

  3. Создайте конвейер с типом ресурса webhooks. Конвейер будет запущен, когда событие веб-перехватчика, созданное рабочим элементом, будет получено подключением службы входящего веб-перехватчика, и вы сможете использовать полезные данные в виде переменных в своих заданиях.

Пример YAML:

trigger: none
resources:
  webhooks:
    - webhook: MyWebhookTrigger         ### Webhook name
      connection: MyWebhookConnection    ### Incoming webhook service connection name

steps:
- task: PowerShell@2
  inputs:
    targetType: 'inline'
    ### JSON payload data is available in the form of ${{ parameters.<WebhookAlias>.<JSONPath>}}
    script: |
      Write-Host "message:  ${{ parameters.MyWebhookTrigger.message.text}}"

- task:your other tasks
  1. Результат испытаний:

Обновлять:

Чтобы распечатать всю полезную нагрузку веб-перехватчика, вы можете добавить в конвейер следующую задачу PowerShell.

- powershell: |    
    $jsonParams = '${{ convertToJson(parameters.MyWebhookTrigger) }}'
    Write-Host $jsonParams
  displayName: 'Print JSON payload data'

Результат:

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

Daniel 30.07.2024 12:48

Привет @Daniel, я обновил ответ, добавив задачу PowerShell, чтобы распечатать всю полезную нагрузку веб-перехватчика. Пожалуйста, проверьте.

Miao Tian-MSFT 31.07.2024 10:19

Другие вопросы по теме

Похожие вопросы