【问题标题】:How to report build progress to TFS vNext from within a powershell script?如何从 powershell 脚本中向 TFS vNext 报告构建进度?
【发布时间】:2018-11-11 00:40:03
【问题描述】:

我的 vNext 构建包含很少的步骤 - 我只是设置了一些设置并调用主 Powershell 构建脚本,该脚本在内部调用 msbuild,但它也执行其他操作。

我知道 vNext 带有一个分布式 msbuild 记录器,它允许 msbuild 报告直到 vNext 的事件以显示在步骤 Timeline 中。

这是否可以用于任意逻辑,而不仅仅是 msbuild?

编辑 1

我编写 vNext(或 Octopus)项目的理念是尽量减少步骤数。这是因为这些步骤都是代码,但是 vNext 和 Octopus 都没有提供我在编写代码时期望得到的环境,具体来说:

  1. 版本控制
    • 从技术上讲,vNext 有它,但对我来说,VCS 意味着与其他版本很容易区分。 vNext diff 充满了无关紧要的废话。仍然比没有章鱼的章鱼好几光年。
  2. 代码审查
  3. 关联的工作项(为什么 X 会更改 Y?)
  4. 调试

对我来说,这些是必不可少的,这就是为什么我倾向于拥有一个主构建脚本。我确实将事情委托给 vNext (Octopus)——比如发布工件和测试或获取源代码。但是在本地特定机器上运行的代码是我的 Powershell 脚本。

【问题讨论】:

  • 您想要构建进度(而不是状态)? powershell 如何知道它调用的东西的进度?
  • 为什么不将步骤分离为几个 powershell 任务 + mdbuild 任务?一个 ps 任务很少做并不是使用 vNext 构建的最佳方式。
  • 我解释了为什么我没有很多步骤。

标签: powershell tfs msbuild azure-devops vnext


【解决方案1】:

我同意 cmets 的建议,即您将构建管道过程拆分为多个步骤/任务,以便更好地查看和记录整体状态。也就是说,有一种方法可以将进度报告回构建时间表。您可以使用Azure Pipeline Tasks Logging Commands page 中记录的##vso[task.setprogress] 命令。以下将在日志/控制台中打印进度百分比,并在时间线中步骤名称旁边显示百分比:

$myArray = @(1..10)
foreach ($item in $myArray) {
    $simplePercentage = (($myArray.IndexOf($item)/$myArray.Length)*100)
    Write-Output ("Current Percentage: $simplePercentage")
    Write-Output ('##vso[task.setprogress value={0};]{1}' -f $simplePercentage, 'My Sample Task')
    Start-Sleep -Seconds 3
}

您可以将您的 Powershell 脚本/函数拆分为任何总体百分比,然后使用该日志记录命令报告各个部分的进度。

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-27
    • 1970-01-01
    • 2018-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多