如何在VSTS中的不同repo中发布定义后调用不同repo的定义

时间:2017-10-26 07:48:27

标签: azure-devops azure-pipelines

我在123分支中的abc repo中有一个部署作业(发布定义),在456分支中的def repo中有另一个构建作业(Build definition)。我想在部署作业之后运行构建作业。我在VSTS中有不同的repo中的两个作业定义。我需要在VSTS中调用什么插件以及如何完成此任务。请帮助任何人。所以一旦发布作业触发到Dev环境,我应该调用VSTS中不同repo的构建作业

1 个答案:

答案 0 :(得分:1)

您只需在Dev版本环境的末尾添加 PowerShell任务或相关的扩展任务即可调用构建。

选项1:在Dev发布环境

的末尾添加PowerShell任务

如下所示对powers build进行排队的powershell脚本(以下示例中的构建定义ID为5):

$body = @{
definition = @{
id = 5
}
}
$Uri = "http://account.visualstudio.com/DefaultCollection/project/_apis/build/builds?api-version=2.0"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body (ConvertTo-Json $body)  

选项2:在市场中使用关联任务

您可以安装Queue Build(s) TaskQueue New Build task等。然后在Dev版本环境的最后添加任务。

更新:要通过powershell创建发行版,您可以使用以下脚本:

$body = '
{
    "definitionId": releasedefinitionID,
     "artifacts": [
        {

      "alias": "build_definition_name",
      "instanceReference": {
        "id": "buildID",
        "name": null
      }

        }
    ]
}
'
$bodyJson=$body | ConvertFrom-Json
Write-Output $bodyJson
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
Write-Output $bodyString
$user="name"
$token="PAT"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))

$Uri = "https://account.vsrm.visualstudio.com/project/_apis/Release/releases?api-version=4.0-preview.4"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body $bodyString -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
write-host $buildresponse