如何从Powershell脚本中向TFS vNext报告构建进度?

时间:2018-11-11 00:40:04

标签: powershell tfs msbuild azure-devops vnext

我的vNext构建包含非常少的步骤-我只是设置一些设置并调用主Powershell构建脚本,该脚本在内部调用msbuild,但它也做其他事情。

我知道vNext附带了一个分布式msbuild记录器,该记录器允许msbuild将直到vNext的事件报告到时间轴中。

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

编辑1

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

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

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

1 个答案:

答案 0 :(得分:1)

我同意建议您将构建管道流程分为多个步骤/任务以更好地查看和记录总体状态的意见。也就是说,有一种方法可以将进度报告回构建时间表。您可以使用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脚本/功能划分为任何整体百分比,然后使用该日志记录命令报告各节的进度。