在 VSTS 的不同分支中发布定义后调用构建定义的任务是什么
What is the task to Call build definition after release definition in different branches in VSTS
我在 VSTS 中有一个要求,目前作为 CI/CD 过程的一部分,我有一个构建定义作业和发布定义 job.The 发布定义将在成功完成构建定义的同时调用一旦发布定义将代码部署到服务器,我需要调用在单独的构建定义中配置的测试作业(位于不同的分支中)。所以我需要 VSTS 中的任务名称如何调用所有测试构建定义成功完成发布 definition.Please 帮我找到如何完成这个 task.can 我是通过 power shell 脚本还是任务来完成?如果我可以通过脚本来做,请把那个脚本分享给我。
此致,
普拉文
要在发布定义中调用构建定义,有两种方式:PowerShell 任务或扩展任务(例如 Queue New Build)。
选项 1:使用 PowerShell 任务通过 REST 对构建进行排队 API
先决条件:
获取构建定义 ID
在要调用的构建定义中,获取构建定义ID:编辑构建定义->变量选项卡->system.definitionId的值为需要使用的ID。作为示例,构建定义 ID 为 32
:
添加个人访问令牌 (PAT)
在您的 VSTS 帐户中 -> 单击您的配置文件 -> 安全 -> 个人访问令牌选项卡 -> 添加 -> 复制新创建的令牌以备后用。
现在添加一个 Powershell 任务,如下脚本:
$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>
替换为你找到的值,将<personal access token>
替换为你添加的真实PAT,替换<project>
为真实的项目名称,并将 <account>
替换为您的真实 VSTS 帐户的名称。
选项 2:在市场中使用相关扩展任务
例如您可以使用 Queue New Build task, Trigger Build task, Queue Build(s) task 等来指定构建定义名称和 json 来排队构建。
- 对于Trigger Build任务,你只需要指定构建名称并使用PAT进行身份验证(
d1
是我排队的构建定义名称,您可以替换为您自己的构建定义名称)。
对于排队构建任务,您可以指定JSON如下(排队主分支的构建):
{ "sourceBranch": "master", "parameters": { "system.debug": true } }
我在 VSTS 中有一个要求,目前作为 CI/CD 过程的一部分,我有一个构建定义作业和发布定义 job.The 发布定义将在成功完成构建定义的同时调用一旦发布定义将代码部署到服务器,我需要调用在单独的构建定义中配置的测试作业(位于不同的分支中)。所以我需要 VSTS 中的任务名称如何调用所有测试构建定义成功完成发布 definition.Please 帮我找到如何完成这个 task.can 我是通过 power shell 脚本还是任务来完成?如果我可以通过脚本来做,请把那个脚本分享给我。
此致, 普拉文
要在发布定义中调用构建定义,有两种方式:PowerShell 任务或扩展任务(例如 Queue New Build)。
选项 1:使用 PowerShell 任务通过 REST 对构建进行排队 API
先决条件:
获取构建定义 ID
在要调用的构建定义中,获取构建定义ID:编辑构建定义->变量选项卡->system.definitionId的值为需要使用的ID。作为示例,构建定义 ID 为
32
:添加个人访问令牌 (PAT)
在您的 VSTS 帐户中 -> 单击您的配置文件 -> 安全 -> 个人访问令牌选项卡 -> 添加 -> 复制新创建的令牌以备后用。
现在添加一个 Powershell 任务,如下脚本:
$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>
替换为你找到的值,将<personal access token>
替换为你添加的真实PAT,替换<project>
为真实的项目名称,并将 <account>
替换为您的真实 VSTS 帐户的名称。
选项 2:在市场中使用相关扩展任务
例如您可以使用 Queue New Build task, Trigger Build task, Queue Build(s) task 等来指定构建定义名称和 json 来排队构建。
- 对于Trigger Build任务,你只需要指定构建名称并使用PAT进行身份验证(
d1
是我排队的构建定义名称,您可以替换为您自己的构建定义名称)。
对于排队构建任务,您可以指定JSON如下(排队主分支的构建):
{ "sourceBranch": "master", "parameters": { "system.debug": true } }