Я рассматриваю возможность создания некоторой автоматизации на основе событий, происходящих на платах Azure DevOps. У меня есть базовая интеграция между GitHub и ADO, которая дает мне ссылки на коммит/PR на основе сообщения о коммите и заголовка PR, но этого недостаточно...
В конечном итоге я хочу прослушивать события, поступающие с моих досок (например, создание элемента, перемещение элемента и т. д.), и запускать конвейер Azure на основе указанного события со всеми данными, связанными с рабочим элементом, для дальнейшей обработки. Можно было бы подумать, что эти двое должны идеально подходить друг другу, но я не нашел простого решения, которое не требовало бы обращения к третьей стороне. Документы тоже не воздали этому должного... кто-нибудь сталкивался с этой проблемой раньше?
Мне кажется очень странным, что вебхук для Дженкинса существует, а прямого триггера для конвейера Azure нет, а не вебхук для действий GitHub. Я определенно что-то здесь упускаю.
Вы можете использовать Общие триггеры на основе веб-перехватчиков для конвейеров YAML, чтобы запускать Azure Pipelines на основе событий Azure Boards.
Вот подробные шаги:
Создайте подключение к службе «Входящий веб-перехватчик» в настройках проекта > Подключения к службе.
Создайте веб-перехватчик 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-адресе — это тот, который вы установили при подключении к службе.
Создайте конвейер с типом ресурса 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
Результат испытаний:
Обновлять:
Чтобы распечатать всю полезную нагрузку веб-перехватчика, вы можете добавить в конвейер следующую задачу PowerShell.
- powershell: |
$jsonParams = '${{ convertToJson(parameters.MyWebhookTrigger) }}'
Write-Host $jsonParams
displayName: 'Print JSON payload data'
Результат:
Привет @Daniel, я обновил ответ, добавив задачу PowerShell, чтобы распечатать всю полезную нагрузку веб-перехватчика. Пожалуйста, проверьте.
по какой-то причине мне не удается распечатать всю полезную нагрузку веб-перехватчика