我在VSTS中有一个要求,目前作为CI / CD过程的一部分,我有一个构建定义作业和发布定义作业。一旦发布定义将成功完成构建定义,将调用发布定义将代码部署到服务器我需要调用测试作业,该测试作业在单独的构建定义中(在不同的分支中)配置。因此,我需要VSTS中的任务名称如何在成功完成发布定义后调用所有测试构建定义。请帮我找到如何完成这个任务。我可以通过power shell脚本或任务来完成吗?如果我可以通过脚本,请分享我的脚本。
此致 普利文
答案 0 :(得分:0)
要在发布定义中调用构建定义,有两种方法:PowerShell任务或扩展任务(例如Queue New Build)。
<强> prerequisitions:强>
获取构建定义ID
在要调用的构建定义中,获取构建定义ID:编辑构建定义 - &gt;变量选项卡 - &gt; system.definitionId的值是需要使用的ID。例如,构建定义标识为<div id ="scrollarea">
<?php
for($page=1; $page <= $number_of_pages ; $page++)
{
echo '<a href="admin_events_template.php?page=' . $page . '">' . $page . '</a>';
}
?>
</div>
:
添加个人访问令牌(PAT)
在您的VSTS帐户中 - &gt;点击您的个人资料 - &gt;安全 - &gt;个人访问令牌标签 - &gt;添加 - &gt;复制新创建的令牌供以后使用。
现在添加一个Powershell任务,如下面的脚本:
32
注意:在脚本中,您需要将$body = '
{
"definition": {
"id": <build definition ID>
}
}
'
$bodyJson=$body | ConvertFrom-Json
Write-Output $bodyJson
$bodyString=$bodyJson | ConvertTo-Json -Depth 100
Write-Output $bodyString
$user="name"
$token="<personal access token>"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
$Uri = "https://<account>.visualstudio.com/DefaultCollection/<project>/_apis/build/builds?api-version=2.0"
$buildresponse = Invoke-RestMethod -Method Post -UseDefaultCredentials -ContentType application/json -Uri $Uri -Body $bodyString -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
write-host $buildresponse
替换为找到的值,将<build definition ID>
替换为您添加的真实PAT,替换为<personal access token>
使用真实的项目名称,并将<project>
替换为您真实VSTS帐户的名称。
例如,您可以使用Queue New Build task,Trigger Build task,Queue Build(s) task等来指定构建定义名称和json以对构建进行排队。
<account>
是我要排队的构建定义名称,您可以替换为自己的构建定义名称)。对于队列构建任务,您可以指定JSON,如下所示(为主分支编译队列):
d1