Ios Travis CI,使用Xcode时不会进一步传递Xcode-exit命令
这是我的Ios Travis CI,使用Xcode时不会进一步传递Xcode-exit命令,ios,xcode,continuous-integration,travis-ci,xcodebuild,Ios,Xcode,Continuous Integration,Travis Ci,Xcodebuild,这是我的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 | xcprett
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
命令失败退出,生成始终标记为“成功”,例如:
当我删除xcpretty
时,作业会正确地通过失败/成功,如
如何在作业成功/失败时使用xcpretty并将正确的值传递给Travis CI?您的问题是bash默认使用xcpretty中最后一个命令中的exist代码。因此,您可以从xcpretty获得exist代码 您可以在您的环境中设置pipefail(set-o pipefail)
pipefail
将导致脚本以第一个非零退出代码退出
例如,在你的Travis文件中
script:
- set -o pipefail
- xcodebuild build -workspace CalendarKitDemo.xcworkspace -scheme "CalendarKitDemo" -sdk iphonesimulator | xcpretty
如果希望更明确,还可以从第一个命令(xcodebuild)获取exitcode,bash在PIPESTATUS
数组中公开管道的出口代码
例如
-xcodebuild build-workspace CalendarKitDemo.xcworkspace-scheme“CalendarKitDemo”-sdk iphonesimulator | xcprety&&exit${PIPESTATUS[0]}
能否请您提供带有“pipefail”的示例“?@RichardTopchiy如果我的回答有用,你介意接受它作为正确的答案吗?谢谢你的回答,效果很好,很抱歉回复太晚!