使用Powershell或DEVOPS任务自动导出构建和发布定义

时间:2019-08-27 21:52:14

标签: azure-devops

需要自动导出特定的Azure DEVOPS生成/发布定义。我知道所需定义的名称。该过程将每周运行以捕获信息。我知道导出可以手动完成,但要自动执行。可以使用希望Powershell脚本。

谢谢 乔

2 个答案:

答案 0 :(得分:2)

如果要自动导出构建/发布定义,最好将 Powershell 任务与 Rest API 结合使用。但是,如果这样,仅知道构建定义名称是不够的。

请参阅以下文档:get build definitionget release definition。您会看到 definitionid 是必要的。实际上,此 definitionid 很容易获得。只需单击您要导出的相关管道, definitionid 就会显示在URL中:

enter image description here

要导出定义,可以在powershell中使用以下脚本:

$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$projectsUrl = "https://dev.azure.com/{org}/{project}/_apis/build/definitions/{build definitionid}?api-version=5.1"
$result = Invoke-RestMethod -Uri $projectsUrl -Method Get -Headers $headers 
$filename=$result.name+".json"
$filePath="D:\"
$file=$filePath+$filename
$result | ConvertTo-Json | Out-File -FilePath $file

在此脚本中,我将内部版本名称指定为文件名($filename=$result.name+".json"),并且还将结果内容转换为 JSON 以使本地文件更具可读性:

enter image description here

类似地,要获取发布定义,只需将URL更改为get release difinition:

$headers = @{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }
$projectsUrl = "https://vsrm.dev.azure.com/{org}/{project}/_apis/release/definitions/{definitionId}?api-version=5.1"
$result = Invoke-RestMethod -Uri $projectsUrl -Method Get -Headers $headers 
$filename=$result.name+".json"
$filePath="D:\"
$file=$filePath+$filename
$result | ConvertTo-Json | Out-File -FilePath $file

注意:在使用@{ Authorization = "Bearer $env:SYSTEM_ACCESSTOKEN" }时,您将启用Allow scripts to access the OAuth token以使环境变量在构建管道中可用。

此外,由于您希望每周捕获一次信息,因此可以安排具有以下导出任务的管道:

enter image description here

现在,这些导出管道将每周运行并导出定义。

答案 1 :(得分:0)

您将查看Azure DevOps CLI中的az pipelines releaseaz pipelines build命令

Commands Reference

Extension Reference