ios - Travis CI,Xcode - 使用 xcpretty 时未进一步传递退出命令
问题描述
这是我的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 中最后一个命令中的现有代码。因此,您可以从 xcpretty 获取现有代码。
您可以在您的环境中设置 pipefail (set -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]}"
推荐阅读
- arrays - 如何将多对象数组中的每个 PC 名称与单个对象数组进行比较
- javascript - 带有 AJAX 的引导表“正在加载,请稍候...”
- python - 使用 python 并行运行一些任务,并按顺序运行其他任务
- scala - spark kubernetes集群模式下无法读取本地文件
- php - 从网站上抓取数据并以纯文本形式获取其 html
- html - 我正在尝试放置一个
- regex - 使匹配通用扩展文本替换
- kubernetes - 在具有节点污点的 K8S 集群上运行 Sonobuoy e2e 测试的解决方法
- azure - 在 azure blob 上获取租约一段时间返回 null
- react-native - 多次显示相同项目的平面列表