将内容从构建传递回Visual Studio Team Services Build

时间:2017-01-12 09:30:18

标签: powershell azure azure-devops azure-pipelines azure-pipelines-build-task

我在Azure上使用自定义构建代理运行构建(准确地使用Unity3d)我在构建计算机上的.txt文件中生成构建的输出,并希望在构建期间创建的工作项中包含内容。 / p>

示例:

  1. Unity构建失败,并在Build.log中记录错误。
  2. 参考构建和来自的错误消息创建了新错误 日志文件
  3. 现在我使用的是PowerShell脚本

    $content = [IO.File]::ReadAllText("$(Build.Repository.LocalPath)\BuildProjectPC\Build.log")
    Write-Host "##vso[task.setvariable variable=logContent;]$content"
    

    要格式化我使用System.Description = $logContent的错误,但PS中变量的内容由于某种原因不会在错误项目中结束(它只包含" $ logContent")。

    如何解决这个问题的方法或方向,分别如何将信息反馈给vsts?

2 个答案:

答案 0 :(得分:1)

用于创建工作项的变量值在运行构建步骤之前已初始化,因此您无法在用于创建工作项的构建步骤期间指定动态变量或更改变量值。 您可以按照以下步骤进行验证:

  1. 打开构建定义>变量>添加一个新变量(例如logContent,value:oldValue)
  2. 选择选项>检查失败时的工作项>其他字段> System.Title $(logContent)
  3. 添加PowerShell构建步骤:Write-Host“$(logContent)”
  4. 添加PowerShell构建步骤:Write-Host“## vso [task.setvariable variable = logContent;] newValue”
  5. 添加PowerShell构建步骤:Write-Host“$(logContent)”
  6. 添加PowerShell构建步骤:[Environment] :: Exit(1)
  7. 日志结果:

    1. 第3步输出oldValue
    2. 步骤5输出newValue
    3. 创建的工作项标题oldValue。
    4. 您的要求的解决方法是,您可以通过PowerShell使用Rest API create a work itemassociated to build(在其他步骤结束时添加PowerShell步骤并选中“始终运行”选项)。

      将工作项关联到构建:

      请求类型:补丁

      请求网址:https://[your vsts account] .visualstudio.com / DefaultCollection / _apis / wit / workitems / [工作项ID]?api-version = 1.0

      内容类型:应用/ JSON贴片+ JSON

      体:

      [
        {
          "op": "add",
          "path": "/relations/-",
          "value": {
            "rel": "ArtifactLink",
            "url": "vstfs:///Build/Build/[build id]",
            "attributes": {
              "comment": "Making a new link for the dependency"
            }
          }
        }
      ]
      

      您可以参考此博客中的PowerShell脚本来创建和关联工作项。

      Build association with work Items in vNext

答案 1 :(得分:0)

在附加字段中,您需要使用以下表示法引用构建/发布定义变量:#define MAX

如下所示:

reference to build variable