【问题标题】:TFS: Best way to trigger build on server restart, or on Windows Updates installationTFS:在服务器重启或 Windows 更新安装时触发构建的最佳方式
【发布时间】:2018-06-14 08:20:07
【问题描述】:

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

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

如果没有办法通过 TFS 做到这一点,那么我猜,一个在启动时运行的 PowerShell 脚本应该可以工作吗?

【问题讨论】:

    标签: powershell tfs tfsbuild


    【解决方案1】:

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

    1. 创建一个脚本来触发特定的构建定义。 (参考下面的示例)

    2. 在启动时运行脚本:


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

    【讨论】:

      【解决方案2】:

      没有现有的触发器可以处理这个问题,但是有一个简单的 REST API 来查询和触发构建。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多