我们是否有任何 Azure Rest API 可以提供与关联管道相关的数据。我有 CI 和 CD 管道。首先我做 CI 管道,然后使用 CD 管道使用最新的或任何其他构建来部署到不同的环境。我想要一个azure Rest api,通过它我可以找到哪个CD管道与CI管道关联并部署在哪个环境上。 CI和CD管道都在yml中。它位于“关联管道”选项卡中
现在我有另一个用例,我的构建管道位于 yml 中并在经典管道中发布,我想要 azure rest api 可以告诉哪个经典发布管道与此 CI 构建管道关联。我可以在“发布”选项卡下看到它,但不要不知道我们可以使用哪个 api 来获取它
目前还没有这样的REST API可以直接提供关联管道和发布的数据。您可以参考以下解决方法。
$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
结果:
注:
对于 YAML CD 管道,我们无法直接知道它部署到哪些环境/阶段,因为它们是在 YAML 文件中定义的。如果您想了解,请运行 REST API Timeline - Get。
GET https://dev.azure.com/{organization}/{project}/_apis/build/builds/{buildId}/timeline?api-version=7.1
要求:
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}。
projectGuid
获取 id
项目 - Get:GET https://dev.azure.com/{OrgName}/_apis/projects/{ProjectName}?api-version=7.1
BuildDefinitionId
。
结果:
...
"environments": [
{
"id": 40,
"name": "Dev",
...
"triggers": [
{
"artifactAlias": "_Repo1-PublishArtifact",
"triggerConditions": [],
"triggerType": "artifactSource"
}
],
...
"id": 24,
"name": "DownloadArtifactFromRepo1",
...