#azure #azure-devops #bitbucket #azure-pipelines
#azure #azure-devops #bitbucket #azure-конвейеры
Вопрос:
Вопрос
Как мне вызвать внешний REST-API с проверкой подлинности OAuth2 из конвейера Azure DevOps?
Чего я пытаюсь достичь
Похоже, что конвейеры Azure не сообщают о состоянии сборки должным образом Bitbucket, когда несколько сборок запускаются одним и тем же фиксатором. Таким образом, я попытался вызвать Bitbucket Cloud API вручную из конвейера, чтобы отобразить правильный статус сборки в Bitbucket.
Что я пробовал
Задача InvokeRESTAPI выглядела многообещающе, поэтому я пошел дальше и создал требуемое «универсальное» подключение к службе (в приведенном ниже фрагменте называется «Bitbucket API»). Однако, похоже, что общие сервисные соединения поддерживают только базовый поток авторизации?
Следующий taks отправляет запрос на правильный URL, но завершается с ошибкой 401 — Unauthorized.
- task: InvokeRESTAPI@1
inputs:
connectionType: 'connectedServiceName'
serviceConnection: 'Bitbucket API'
method: 'POST'
body: |
{
"state": "INPROGRESS",
"key": "azure-pipeline",
"name": "CI-Pipeline 1",
"url": "tbd",
"description": "Lorem ipsum dolor sit amet"
}
urlSuffix: 'commit/$(Build.SourceVersion)/statuses/build'
waitForCompletion: 'false'
Есть ли альтернатива, которую я пропустил, или мне действительно нужно самому реализовать поток OAuth в python или powershell?
Комментарии:
1. Привет, как насчет проблемы? Разрешает ли приведенный ниже ответ ваш вопрос, если да, вы могли бы принять его в качестве ответа , чтобы он мог помочь другим членам сообщества, у которых возникают те же проблемы, и мы могли бы заархивировать эту тему, спасибо.
Ответ №1:
Вместо использования OAuth можно также рассмотреть возможность использования паролей приложений.
Затем вы можете использовать простую задачу bash для вызова API с помощью команды curl:
curl -X POST -is -u <USER_NAME>:<APP_PASSWORD>
-H 'Content-Type: application/json'
https://api.bitbucket.org/2.0/repositories/<USER_NAME>/<REPOSITORY_SLUG>/commit/<COMMIT>/statuses/build
-d '{
"state": "SUCCESSFUL",
"name": "Build key - description",
"url": "https://<AZURE_URL_REFERENCE>",
"description": "A general description"
}'
Для получения более подробной информации вы можете проверить эту аналогичную проблему.
Ответ №2:
Вместо того, чтобы Generic
пытаться использовать BitBucket Cloud
тип подключения к сервису. Он также поддерживает OAuth.
Комментарии:
1. Я пробовал это, но затем InvokeRESTAPI-Task выдает ошибку о том, что требуется подключение к службе типа «generic» :/