2

我正在构建一个解决方案,它需要在构建之后运行批处理文件(工作流程中有一个序列)。TFS 将构建标记为部分成功,但即使在完全详细模式(“诊断”)下,日志中也没有错误。我正在检查批处理文件中每一行之后的错误级别,它始终为 0。我还测试了在每行之后在文件中重定向stdoutstderr并且那里没有任何线索。

它与单元测试无关,因为我暂时跳过它们。

我注意到,通常当批处理文件中发生错误(例如找不到文件)时,会有一个视觉提示来指示错误,这与部分成功的状态相匹配。但我没有看到任何视觉提示。

那么 TFS 如何才能确定构建只是部分成功呢?

谢谢,

4

2 回答 2

2

解决了。

事实证明GetImpactedTests活动正在引发异常(我可以在 TFS 机器的事件查看器中看到它),但它根本没有显示在构建日志中。

我猜这个异常使构建部分成功(因为编译部分成功)但我无法在构建日志中明确看到分配。当我绕过影响分析(通过将分析测试影响设置为 False 或完全删除 GetImpactedTests 活动)时,不会发生错误。

于 2012-11-07T22:05:00.753 回答
0

我们在这里使用 Lab Workflow 进行类似的实验(以启动我们的 CodedUI 测试)。不同的构建模板,相同的症状。

我注意到构建过程报告它部分成功,突出显示部署脚本(批处理文件)中似乎成功的步骤。

该命令是问题是在移动设备上安装我们的移动应用程序的命令(以便在晚上测试它):

adb install -d -r test.apk

我想在运行 adb 命令后立即查看错误级别,但错误级别为 0。

然后我想也许这个命令正在将它的输出发送到stderr ,并在android开源项目上找到了这篇文章,这证实了我的假设。

以下是我的修复:

adb install -r -d test.apk  2>&1

附加2>&1只是将 stderr 重定向到 stdout,现在我的部署脚本不再报告错误,并且构建现在成功(当所有测试都通过时!)。

结论:当脚本向stderr写入任何内容时,构建工作流会将其报告为错误(部分成功,因为它不会阻止工作流的执行)。

我知道这不是您的特定问题,但由于我们有相同的症状,我认为stderr信息可以帮助其他人找出他们的构建过程报告部分成功的原因,即使一切似乎都正常。

于 2016-12-16T15:31:37.030 回答