Travis CI, Xcode - команда выхода больше не передается при использовании xcpretty - PullRequest
0 голосов
/ 01 мая 2019

Вот мой 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 завершилась с ошибкой, например, здесь: «неудачное» задание, которое завершается

succeeding job

Когда я удаляю xcpretty, задание проходит неудачно / успешно, как с это пример работы .

Как я могу использовать xcpretty и передавать правильные значения в Travis CI при успешной / неудачной работе?

1 Ответ

1 голос
/ 07 мая 2019

Ваша проблема в том, что bash по умолчанию использует существующий код из последней команды в xcpretty. Таким образом, вы получаете существующий код из xcpretty.

Вы можете пойти и установить pipefail в своей среде (установите -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]}"

...