TFS:触发服务器重启或Windows更新安装

时间:2018-01-04 15:04:29

标签: powershell tfs tfsbuild tfs2017

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

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

如果没有办法通过TFS实现,那么,我想,在启动时运行的PowerShell脚本应该有效吗?

2 个答案:

答案 0 :(得分:2)

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

  1. 创建脚本以触发特定的构建定义。 (参见下面的样本)

  2. 在启动时运行脚本:

  3. 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根据特定名称或标记查询构建定义列表,然后对其进行排队。