【问题标题】:Batch script to Queue the builds in tfs 2015/2017在 tfs 2015/2017 中对构建进行排队的批处理脚本
【发布时间】:2017-12-26 06:26:20
【问题描述】:

我试图使用批处理脚本执行构建,我写了一个但收到此错误:

请定义构建定义名称。 tfsbuild start /collection:https://tfs.prod.dcx.int.bell.ca/tfs/bellca/Consumer/builds/AllDefinitions/{Release)/{Project-name}/{Build定义名称}

我该如何解决这个问题?

【问题讨论】:

    标签: visual-studio tfs


    【解决方案1】:

    tfsbuild 命令行工具仅适用于 XAML 构建。对于现代构建,您需要使用 REST API 或 REST API 的 C# 包装器。

    文档有很好的例子,但基本上POST https://{instance}/DefaultCollection/{project}/_apis/build/builds?api-version={version}

    有适当的身体:

    {
      "definition": {
        "id": 25
      },
      "sourceBranch": "refs/heads/master",
      "parameters": "{\"system.debug\":\"true\",\"BuildConfiguration\":\"debug\",\"BuildPlatform\":\"x64\"}"
    }
    

    【讨论】:

      【解决方案2】:

      是的,正如 Daniel 所说,您需要使用 REST API,参见 Queue-a-build

      您可以简单地使用下面的 PowserShell 脚本来对构建进行排队(只需相应地替换参数):

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

      【讨论】:

      • 您好,我使用您的脚本制作了 build.bat 文件。运行时出现很多错误。
      • @Ayush 这不是 .bat 脚本,您需要创建一个 PowerShell 文件,只需复制并粘贴脚本并相应地替换参数,然后将其保存到 *.ps1 文件。然后运行 ​​PS 脚本。
      • 知识较少,仍处于学习阶段。非常感谢您的帮助。将尝试让您知道任何问题。
      • 我们的构建是在 XAML 中的,所以我应该将此 json 更改为 xaml 吗??
      • 当尝试使用 xaml 代替 json 时出现以下错误
      猜你喜欢
      • 1970-01-01
      • 2014-03-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-05
      • 2016-10-02
      • 2017-10-15
      • 1970-01-01
      相关资源
      最近更新 更多