Вызов Bitbucket 2.0 API из конвейера Azure DevOps

#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» :/