Неудачный тест XCode не дал сбой конвейеру действий Github - PullRequest
2 голосов
/ 04 ноября 2019

У меня есть конвейер Github Action:

name: default

on: [push]

jobs:
  build:

    runs-on: macOS-latest

    steps:
    - uses: actions/checkout@v1
    - name: CocoaPod Install
      run: pod install
    - name: Force xcode 11
      run: sudo xcode-select -switch /Applications/Xcode_11.1.app
    - name: Test
      run: ./pipelines.sh test
    - name: Save report
      uses: actions/upload-artifact@v1
      with:
        name: test_report
        path: ./Test

и сценарий Shell:

function test
{
    xcodebuild \
       -workspace MyApp.xcworkspace \
       -scheme DEBUG\ -\ MyApp \
       -destination 'platform=iOS Simulator,name=iPhone 11' \
       test
}

Моя проблема в том, что когда я запускаю свой конвейер с ошибочным тестом, конвейер помечается какPASSED, что является проблемой ...

Я также проверил с помощью fastlane, провал теста не провалит конвейер.

Как я могу сделать мой конвейер как FAIL, если тест не пройден?

Снимок экрана Cf для fastlane: enter image description here

1 Ответ

1 голос
/ 04 ноября 2019

Вам необходимо вернуть ненулевое значение, чтобы пропустить шаг. Попробуйте добавить это к команде xcodebuild.

xcodebuild -... || exit 1

Есть несколько других решений помимо этого в следующем вопросе. Как получить возвращаемое значение xcodebuild?

Обновление: На основании ваших комментариев, которые вы хотели бы выполнить после шагов, вы можете сделать следующее.

Измените свой сценарий, чтобы задать вывод, содержащий результат команды xcodebuild.

    xcodebuild \
       -workspace MyApp.xcworkspace \
       -scheme DEBUG\ -\ MyApp \
       -destination 'platform=iOS Simulator,name=iPhone 11' \
       test
    echo "::set-output name=result::$?"

Добавьте id к шагу, где выполняется этот сценарий.

    - name: Test
      id: xcodebuild
      run: ./pipelines.sh test

В конце вашего рабочего процесса вы можете проверить, не прошли ли тесты, и провалить рабочий процесс.

      - name: Check Tests Passed
        if: steps.xcodebuild.outputs.result != 0
        run: exit 1
...