简而言之,要求是验证我们最新发布的软件是否可以在应用最新的Windows更新和/或其他补丁后构建并安装。因此,构建服务器VM将仅为此目的而配置,并且构建仅需要在更新后运行。
由于此类更新通常会在重新启动后进行,因此我在考虑触发构建和部署的服务器重启事件。 2017年TFS中是否存在此类选项?
如果没有办法通过TFS实现,那么,我想,在启动时运行的PowerShell脚本应该有效吗?
答案 0 :(得分:2)
没有这样的内置功能来实现这一目标。但是,创建在启动时运行的PowerShell脚本应该可行。正如Jessehouwing所说,您可以使用REST API创建脚本以触发构建。
创建脚本以触发特定的构建定义。 (参见下面的样本)
在启动时运行脚本:
Param(
[string]$collectionurl = "http://server:8080/tfs/DefaultCollection",
[string]$projectName = "ProjectName",
[string]$keepForever = "true",
[string]$BuildDefinitionId = "34",
[string]$user = "username",
[string]$token = "password"
)
# Base64-encodes the Personal Access Token (PAT) appropriately
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$token)))
function CreateJsonBody
{
$value = @"
{
"definition": {
"id": $BuildDefinitionId
},
"parameters": "{\"system.debug\":\"true\",\"BuildConfiguration\":\"debug\",\"BuildPlatform\":\"x64\"}"
}
"@
return $value
}
$json = CreateJsonBody
$uri = "$($collectionurl)/$($projectName)/_apis/build/builds?api-version=2.0"
$result = Invoke-RestMethod -Uri $uri -Method Post -Body $json -ContentType "application/json" -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)}
答案 1 :(得分:1)
没有现有的触发器来处理这个问题,但是有一个简单的REST API来查询和触发构建。
在任务调度程序中创建启动作业很容易,使用REST API根据特定名称或标记查询构建定义列表,然后对其进行排队。