Xcode Travis构建失败,错误为65

Xcode Travis构建失败,错误为65,xcode,travis-ci,Xcode,Travis Ci,我在GitHub上安装了Travis CI。我使用它来检查iOS应用程序的提交。问题是,我经常随机得到一个错误65。我还没有找到解决办法 当我在作业失败后重新启动作业2-3次时,它在90%的时间内通过。 我以前也遇到过一个问题,日志对于Travis来说过于冗长(>4MB),但我添加了xcpretty来解决这个问题 我从日志中获取的错误: ... Generating 'XYZ.app.dSYM' ❌ error: couldn't remove '/Users/travis/Library/D

我在GitHub上安装了Travis CI。我使用它来检查iOS应用程序的提交。问题是,我经常随机得到一个错误65。我还没有找到解决办法

当我在作业失败后重新启动作业2-3次时,它在90%的时间内通过。

我以前也遇到过一个问题,日志对于Travis来说过于冗长(>4MB),但我添加了
xcpretty
来解决这个问题

我从日志中获取的错误:

...
Generating 'XYZ.app.dSYM'
❌  error: couldn't remove '/Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app/SomeName.storyboardc' after command failed: Directory not empty
...
然后在Travis日志的末尾:

Testing failed:
    The file “056-Jj-FAu-view-XmS-Ro-0cO.nib” couldn’t be opened because there is no such file.
    error: couldn't remove '/Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app/SomeName.storyboardc' after command failed: Directory not empty
    error: lipo: can't move temporary file: /Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app.dSYM/Contents/Resources/DWARF/XYZ to file: /Users/travis/Library/Developer/Xcode/DerivedData/XYZ-aaltcjvmshpmlufpmzdsgbernspl/Build/Products/Debug-iphonesimulator/XYZ.app.dSYM/Contents/Resources/DWARF/XYZ.lipo (No such file or directory)
    Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil emitted errors but did not return a nonzero exit code to indicate failure
** TEST FAILED **
The following build commands failed:
    LinkStoryboards
    LinkStoryboards
(2 failures)
The command "./scripts/build.sh" exited with 65.

我在Xcode和Travis设置中都使用了
Xcode 8

啊,好问题。有时,可以使用
travis_retry
解决代码签名步骤中失败的
xcodebuild
步骤-travis将针对任何非零退出状态重试步骤3次,这将减少您手动重新启动该步骤的需要。在本文中也有一些建议的代码片段。祝你好运

如果您遇到错误代码65(来自随机故障),您可以在
xcodebuild
(假设您正在运行测试)命令的末尾使用管道传输以下命令,以获得更一致的结果:

(这里是XCODEBUILD_命令)|awk'开始{success=0}$0~/.*测试,0次失败\(.*/{success=1}{print$0}结束{if(success==0){exit 1}

这将查找
测试,输出文本中有0个失败(
),因此使用
xcodebuild
的文本输出而不是
xcodebuild
的状态代码来确定成功


注意:请记住,如果您在代码中执行类似于
NSLog('tests,0次失败(');
的操作,您会得到一个误报,这不太可能是偶然发生的。您可能必须更新
测试,0次失败(
在更新
xcodebuild
之间的awk脚本中。但是,与
xcodebuild
保持一致的结果绝对值得这个价格。

这是不同CI上出现的一个问题。在web上有所有不同类型的尝试。似乎在启动ins的构建命令之前启动模拟器truments是Xcode8之前的一个黑客。这应该已经不起作用了。我还没有研究过不同的选项。是的,我正在遵循这个思路,并且也很活跃,正如你们可能已经看到的:)不幸的是,预热模拟器对我来说并没有任何改变。