azure - 从 Azure DevOps Pipeline 调用 Bitbucket 2.0 API

标签 azure azure-devops bitbucket azure-pipelines

问题

如何从 Azure DevOps Pipeline 调用带有 oAuth2-Authentication 的外部 REST-API?

我想要实现的目标

因此,当同一提交触发多个构建时,Azure Pipelines 似乎无法将构建状态正确报告回 Bitbucket。因此,我尝试从管道内手动调用 Bitbucket Cloud API,以在 Bitbucket 中显示正确的构建状态。

我尝试过的

InvokeRESTAPI-Task看起来很有希望,所以我继续创建所需的“通用”服务连接(在下面的代码片段中称为“Bitbucket API”)。然而,通用服务连接似乎只支持基本的身份验证流程?

以下任务将请求发送到正确的 URL,但失败并显示 401 - 未经授权。

- 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'

是否有我错过的替代方案,或者我实际上需要自己在 python 或 powershell 中实现 oAuth 流程?

最佳答案

除了使用 OAuth,您还可以考虑使用 App passwords .

然后你可以使用简单的bash task通过curl命令调用API:

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"
    }'

有关更多详细信息,您可以查看此 similar issue .

关于azure - 从 Azure DevOps Pipeline 调用 Bitbucket 2.0 API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63793867/

相关文章:

angular - 每个新的 Angular 生产PWA版本上的“意外 token <”,直到站点刷新

curl - 如何使用命令行从私有(private) Bitbucket 存储库下载单个原始文件?

c# - 当数据库中的事务完成但连接问题导致异常时,如何解决这种情况?

azure - Windows Azure 存储版本升级到 > 4 会导致 "The remote server returned an error: (400) Bad Request."

azure - 当计划的 WebJob 长时间运行时会发生什么

azure - 如何获取发布管道中提供的 secret 变量的值

autocomplete - Azure Devops 禁用拉取请求自动完成

git - "fatal: Authentication failed"与 git-credential-manager

git - 从 Azure DevOps 访问本地 Bitbucket 服务器

BitBucket:如何通过 API 更新文件