这是我的travis.yml
文件:
osx_image: xcode10.2
language: objective-c
before_install:
- travis_wait 35; cd CalendarKitDemo; pod update
script:
- xcodebuild build -workspace CalendarKitDemo.xcworkspace -scheme "CalendarKitDemo" -sdk iphonesimulator | xcpretty
notifications:
email: false
问题是,即使实际的
xcodebuild
命令由于失败而退出,生成始终标记为“成功”,例如,在这里:"failing" job that succeeds
与this example job一样,当我删除
xcpretty
时,作业正确通过了失败/成功。如何在工作成功/失败时同时使用xcpretty并将正确的值传递给Travis CI?
最佳答案
您的问题是bash默认使用xcpretty中最后一条命令中的存在代码。因此,您可以从xcpretty获取现有代码。
您可以在环境中设置管道失败(设置-o pipefail)。pipefail
将导致脚本以第一个非零退出代码退出。
例如。在您的Travis文件中
script:
- set -o pipefail
- xcodebuild build -workspace CalendarKitDemo.xcworkspace -scheme "CalendarKitDemo" -sdk iphonesimulator | xcpretty
如果您想更加明确,也可以从第一个命令(xcodebuild)获取退出代码。bash在
PIPESTATUS
数组中公开了管道的退出代码。所以
- xcodebuild build -workspace CalendarKitDemo.xcworkspace -scheme "CalendarKitDemo" -sdk iphonesimulator | xcpretty && exit ${PIPESTATUS[0]}"
关于ios - Travis CI,Xcode-使用xcpretty时不会进一步传递退出命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55934637/