当 CI 和 CD 不在单个管道中时,Azure Rest api 获取发布管道的信息

问题描述 投票:0回答:1

我们是否有任何 Azure Rest API 可以提供与关联管道相关的数据。我有 CI 和 CD 管道。首先我做 CI 管道,然后使用 CD 管道使用最新的或任何其他构建来部署到不同的环境。我想要一个azure Rest api,通过它我可以找到哪个CD管道与CI管道关联并部署在哪个环境上。 CI和CD管道都在yml中。它位于“关联管道”选项卡中

Pipeline

现在我有另一个用例,我的构建管道位于 yml 中并在经典管道中发布,我想要 azure rest api 可以告诉哪个经典发布管道与此 CI 构建管道关联。我可以在“发布”选项卡下看到它,但不要不知道我们可以使用哪个 api 来获取它

enter image description here

azure-devops azure-rest-api
1个回答
0
投票

目前还没有这样的REST API可以直接提供关联管道发布的数据。您可以参考以下解决方法。

1.获取与关联管道中的构建相关的数据。
  • PowerShell 脚本:
$token = "{PAT}"
$token = [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($token)"))
$url="https://dev.azure.com/{OrgName}/_apis/Contribution/HierarchyQuery/project/{ProjectName}?api-version=5.0-preview.1"
$body = @'
{
    "contributionIds": [
        "ms.vss-build-web.cd-pipelines-runs-details-for-ci-pipeline-run-data-provider"
    ],
    "dataProviderContext": {
        "properties": {
            "buildId": "{YourCurrentBuildId}",
            "paginationLimit": "100",
            "sourcePage": {
                "url": "https://dev.azure.com/{OrgName}/{ProjectName}/_build/results?buildId={YourCurrentBuildId}&view=ms.vss-releaseManagement-web.deployments-tab",
                "routeId": "ms.vss-build-web.ci-results-hub-route",
                "routeValues": {
                    "project": "{ProjectName}",
                    "viewname": "build-results",
                    "controller": "ContributedPage",
                    "action": "Execute"
                }
            }
        }
    }
}
'@
$head = @{ Authorization =" Basic $token" }
$result = Invoke-RestMethod -Uri $url -Method Post -Headers $head -Body $body -ContentType application/json
$result | ConvertTo-Json -Depth 3

  • 结果:

    enter image description here

  • 注:

    对于 YAML CD 管道,我们无法直接知道它部署到哪些环境/阶段,因为它们是在 YAML 文件中定义的。如果您想了解,请运行 REST API Timeline - Get

    GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=7.1

2.在Releases中获取与版本相关的数据。使用 REST API 定义 - 列表
  • 要求:

    GET https://vsrm.dev.azure.com/{OrgName}/{ProjectName}/_apis/Release/definitions?artifactType=Build&artifactSourceId={artifactSourceId}&$top=1?api-version=6.0-preview.4

    对于

    artifactSourceId
    :{projectGuid}:{BuildDefinitionId}。

    • 从 REST API 响应正文中的
      projectGuid
      获取
      id
      项目 - Get
      GET https://dev.azure.com/{OrgName}/_apis/projects/{ProjectName}?api-version=7.1
    • 从当前管道的 URL 获取
      BuildDefinitionId
      enter image description here
  • 结果:

      ...
      "environments": [
        {
          "id": 40,
          "name": "Dev",
      ...
      "triggers": [
        {
          "artifactAlias": "_Repo1-PublishArtifact",
          "triggerConditions": [],
          "triggerType": "artifactSource"
        }
      ],
      ...
      "id": 24,
      "name": "DownloadArtifactFromRepo1",
      ...
© www.soinside.com 2019 - 2024. All rights reserved.