Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调用批处理文件时TFS生成部分成功,但日志中没有错误_Tfs_Batch File_Tfsbuild - Fatal编程技术网

调用批处理文件时TFS生成部分成功,但日志中没有错误

调用批处理文件时TFS生成部分成功,但日志中没有错误,tfs,batch-file,tfsbuild,Tfs,Batch File,Tfsbuild,我正在构建一个解决方案,它需要在构建之后运行一个批处理文件(在工作流中有一个顺序)。TFS将生成标记为部分成功,但即使在完全详细模式(“诊断”)下,日志中也没有错误。我在批处理文件中的每一行之后检查错误级别,它始终为0。我还测试了在每行后面的文件中重定向stdout和stderr,但没有任何线索 这与单元测试无关,因为我暂时跳过它们 我注意到,通常当批处理文件中发生错误时(例如,未找到文件),会有一个视觉提示来指示错误,这与部分成功状态相匹配。但我看不到任何视觉线索 那么,TFS如何确定构建仅部

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

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

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

那么,TFS如何确定构建仅部分成功

谢谢,

已解决

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


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

我们在这里使用实验室工作流进行了类似的实验(以启动代码DUI测试)。不同的构建模板,相同的症状

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

该命令是在移动设备上安装我们的移动应用程序的命令(以便在夜间进行测试):

我想在运行adb命令后立即查看errorlevel,但errorlevel为0

然后我想可能命令正在将其输出发送到stderr,并在上找到了这篇文章,这证实了我的假设

以下是我的解决方案:

adb install -r -d test.apk  2>&1
追加2>&1只是将stderr重定向到stdout,现在我的部署脚本不再报告错误,构建现在成功(当所有测试都通过时!)

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


我知道这不是你的问题,但因为我们有同样的症状,我认为stderr信息可以帮助其他人找到生成过程报告部分成功的原因,即使一切正常。

以诊断模式运行生成,并使用输出跟踪发生的情况。如果显示部分成功,则会进入工作流的某个位置,在该位置设置结果值。如果你在诊断模式下运行它,你可以准确地看到发生了什么。迪伦,你的意思是我应该看到一行在日志中设置了构建结果吗?我不。我没有看到任何红色圆圈,这与批处理文件中存在故意错误时的情况相反。您是否在诊断模式下运行了它?它非常详细地显示了构建中运行的每个活动。您希望查看每个SetBuildProperties活动,以查看在整个生成过程中CompilationStatus、TestStatus和/或Status设置为什么。是的,我在诊断模式下运行了它,但我看不到任何状态设置为PartiallySucceed。我是否必须在InvokeProcess活动结束时显式调用SetBuildProperties活动来处理状态?我假设这是由TFS处理的。PartiallySucceeded通常意味着CompilationStatus=Success和TestStatus=Failed(反之亦然)。检查BuildProperties的设置位置,它会引导您找到原因。
adb install -r -d test.apk  2>&1