TFS:在服务器重新启动或 Windows 更新安装时触发生成的最佳方式



简而言之,要求是验证我们最新发布的软件是否可以在应用最新的Windows更新和/或其他补丁后构建和安装。因此,将为此目的配置生成服务器 VM,并且生成只需要在更新后运行。

由于此类更新通常之后会重新启动,因此我正在考虑触发构建和部署的服务器重新启动事件。TFS 2017 中是否存在此类选项?

如果无法通过TFS执行此操作,那么我想,在启动时运行的PowerShell脚本应该可以工作吗?

没有这样的内置函数来实现这一点。但是,创建在启动时运行的PowerShell脚本应该可以工作。正如Jessehouwing所说,您可以使用REST API创建脚本来触发构建。

  1. 创建脚本以触发特定的生成定义。(参考以下示例(

  2. 启动时运行脚本:

    • 如何在每次计算机启动时运行批处理文件

    • 如何计划批处理文件在 Windows 中自动运行7-10-8


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)}

没有处理此问题的现有触发器,但有一个简单的 REST API 来查询和触发生成。

任务计划程序中创建启动时作业很容易,使用 REST API 根据特定名称或标记查询生成定义列表,然后将其排队。

  • 列出生成定义
  • 对生成进行排队

最新更新