【问题标题】:TFS 2013 default template run powershell script and log outputTFS 2013 默认模板运行 powershell 脚本和日志输出
【发布时间】:2014-04-08 19:41:01
【问题描述】:

在 VS 2013 中,从构建过程中运行 powershell 脚本变得非常简单。不幸的是,没有写入主机命令被记录到 tfs 构建日志中。

所以在构建完成后,我无法查看日志文件并查看 powershell shell 脚本实际上做了什么。

日志文件只说:

Run optional script after MSBuild 00:03
Run optional script before Test Runner 00:00
Run VS Test Runner 00:00
Run optional script after Test Runner 00:00
...

ActivityLog.AgentScope.1.xml 日志文件比较健谈,但信息仍然太少。

Run optional script after MSBuild00:00:03
InputsEnvironmentVariables: 
Enabled: True
Arguments: 
FilePath: $/CMP04/Some/Project/Main/Web/.scripts/CI/CI.ps1

OutputsResult: 0

C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy RemoteSigned -NoProfile -NonInteractive -File "D:\ws_build\1\CMP04\IP-Main\src\Some\Project\Main\Web\.scripts\CI\CI.ps1"

知道如何在 tfs 构建日志中获取任何调试信息吗? 我当然可以创建一个额外的日志文件,但那是计划 b :)

edit: write-host 正在记录到代理的日志 xml。 write-verbose 不是。

【问题讨论】:

  • 投递文件夹没有登录?试试diagnostic build
  • 我确实有日志。这个问题是关于它们实际上是什么——或者更准确地说是什么不是。
  • 你试过用Verbosity=Diagnostic运行吗?
  • 2013 年不再有这样的选择。我相信。
  • Ok Write-host 出现在构建代理的日志文件中。 Write-verbose 不会。

标签: powershell logging tfs tfsbuild


【解决方案1】:

如果你想捕获 Write-Host,你可以使用Start-Transcript。除了 TFS,您还需要考虑记录什么以及如何记录。

【讨论】:

  • 开始成绩单不起作用。它确实创建了日志文件和所有内容,但实际上并没有向其中写入任何内容。当我手动运行脚本时它确实如此。我必须对此进行调查。
【解决方案2】:

如果您使用的是 TFS 2013 默认模板,您可以在 Builds 下的“Team Web Access”中检查您的诊断日志,选择您要显示日志的构建,然后您将看到三个选项:

摘要日志诊断

单击诊断链接,您将看到非常详细的日志,包括 powershell 脚本输出。

莫伊斯。

【讨论】:

    【解决方案3】:

    我也有这个问题。我在 2013 年写了 4 行“调试”信息。调试信息只能使用 Write-Host。如果您的其中一行在示例Write-Verbose 中,则所有Write-Host 都不会在您的构建的诊断选项卡中显示操作。我使用 TFS2013 Update 2 对此进行了测试。

    您可以同时使用Write-HostWrite-Warning

    【讨论】:

    • 我刚刚在同一个 PowerShell 脚本中多次使用 Write-Host、Write-Output、Write-Verbose、Write-Warning、Write-Error 和 Write-Debug 进行了测试,它们都出现了在诊断日志中,写入详细和写入调试除外。那些似乎永远不会被记录。
    【解决方案4】:

    在 VS 2013 中没有显式设置默认构建模板的详细程度;相反,每个构建都会记录诊断信息。如您所述,原始数据被转储到 Build Drops 文件夹中代理的 xml 日志中。但是,要获得它的漂亮视图,您必须从 Team Web Access 访问它;您不能再使用 Visual Studio,这是有道理的,因为在 Visual Studio 中查看这些诊断日志通常会导致 VS 挂起。

    因此,要在 Team Web Access 中查看诊断日志,您可以:

    • 如果使用 VS 2013,您只需在 Build Explorer 中右键单击构建并选择 Open in Browser

    • 从 Team Web Access 中的 Team Project 页面,选择 Build 选项卡,找到您感兴趣的构建并双击它,然后选择 Diagnostics 选项卡。

    以下是我在 TFS 2013 Update 2 的实验中发现的:

    在构建摘要和日志视图(VS 中仅有的两个视图)中,只会显示写入错误消息。在您的 PowerShell 脚本中使用 Write-Error 不会将您的构建标记为 Failed,而是会将其标记为 Partially Succeed

    Diagnostics 视图中,Write-Host、Write-Output、Write-Warning 和 Write-Error 都会显示。即使您将 -Verbose 和 -Debug 开关作为 PowerShell 脚本参数传递,Write-Verbose 和 Write-Debug 也不会显示。

    【讨论】:

    • 在 TFS 2013 Update 3 上的行为相同。感谢您对您的发现进行了详尽、详尽的描述。
    • 非常感谢。找到这个很有帮助。我花了几个小时试图弄清楚这一点。
    • 构建完成后在“诊断”选项卡中查看 Write-Host 的输出效果很好,但是在构建期间获取 Write-Host 输出怎么样?
    • 要显示来自Write-Verbose 的详细输出,您必须在构建定义中为脚本设置-verbose 标志。要使此标志起作用,您必须在脚本中设置 [CmdletBinding()] 属性。我从这个脚本中得到了这个提示:tfsbuildextensions.codeplex.com/SourceControl/latest#Scripts/…(但我没有尝试)
    • 在脚本中设置 '[CmdletBinding()]' 并在构建定义中使用 -verbose 参数就可以了。在 Build 的诊断 Web 视图中,我收到了很多“VERBOSE: ...”-我的 Write-Verbose cmdlet 的消息。
    【解决方案5】:

    您可以使用BuildExplorer 更详细地查看构建日志。

    披露:我是这个项目的维护者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-09
      • 1970-01-01
      • 2020-11-06
      • 1970-01-01
      相关资源
      最近更新 更多