Azure devops 如何使用Azure DevOps REST API列出具有部署作业的YAML管道?
我正在寻找一种方法来列出所有使用该功能(于2020年发布)触发部署的YAML管道“定义” 在前面的示例中,很简单,您只需使用REST API端点列出所有现有的发布定义管道:Azure devops 如何使用Azure DevOps REST API列出具有部署作业的YAML管道?,azure-devops,yaml,azure-pipelines,azure-devops-rest-api,azure-pipelines-yaml,Azure Devops,Yaml,Azure Pipelines,Azure Devops Rest Api,Azure Pipelines Yaml,我正在寻找一种方法来列出所有使用该功能(于2020年发布)触发部署的YAML管道“定义” 在前面的示例中,很简单,您只需使用REST API端点列出所有现有的发布定义管道: GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=6.0 我没有发现任何类似的YAML管道 我尝试使用端点(在REST API版本6.0中发布)获取管道信息: GET https://d
GET https://vsrm.dev.azure.com/{organization}/{project}/_apis/release/definitions?api-version=6.0
我没有发现任何类似的YAML管道
我尝试使用端点(在REST API版本6.0中发布)获取管道信息:
GET https://dev.azure.com/{organization}/{project}/_apis/pipelines/{pipelineId}?api-version=6.0-preview.1
返回此JSON(已编辑):
您获得了用于创建此管道的存储库和YAML文件,但没有关于内容的信息。无法知道此管道用于部署
使用Azure DevOps REST API,是否有方法检索有关YAML管道的更多信息,以了解其是否将参与部署
PS:下载YAML文件并解析它们以获取部署作业引用不是一个选项。不幸的是,不可以,您不能使用任何可用的API来检索与发布相关联的YAML管道 在这方面,我所能提供的最好建议是做以下两件事之一,以便能够轻松检测管道是同时构建和部署,还是仅构建:
$outfile = "D:\YAMLTempFolder\test.yaml"
$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::
ASCII.GetBytes(":$($connectionToken)"))
$YAMLURL = "GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}/yaml?api-version=6.1-preview.1"
$YAMLInfo = Invoke-RestMethod -Uri $YAMLURL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$yaml = $YAMLInfo.yaml
echo $yaml.Replace("...","") > $outfile
我的YAML文件的测试结果是:
现在,我们只需要确定文件是否包含关键字
-deployment
有关用于部署的YAML管道中缺少的功能的相关问题:以下回答有用吗?感谢您的回答。我不确定我(或其他任何人)是否想编写一个YAML解析器(并使其保持最新状态),以满足像列出部署作业这样简单的需求。YAML模板的使用使这比您预期的要困难。至少,如果Azure DevOps使用的YAML解析器可以公开使用,这不会有多大问题,但事实似乎并非如此。在我看来,这似乎是该产品应该具备的一个基本功能:正如我在问题中所解释的,使用经典管道很容易。为什么有这样的“现代”特征会如此困难?
GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}/yaml?api-version=6.1-preview.1
$outfile = "D:\YAMLTempFolder\test.yaml"
$connectionToken="Your PAT Here"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::
ASCII.GetBytes(":$($connectionToken)"))
$YAMLURL = "GET https://dev.azure.com/{organization}/{project}/_apis/build/definitions/{definitionId}/yaml?api-version=6.1-preview.1"
$YAMLInfo = Invoke-RestMethod -Uri $YAMLURL -Headers @{authorization = "Basic $base64AuthInfo"} -Method Get
$yaml = $YAMLInfo.yaml
echo $yaml.Replace("...","") > $outfile