AWS CodeBuild для python не дает сбоев

Возможно, я неправильно понял концепцию, но разве шаг Codebuild не терпит неудачу, когда в вашем коде есть ошибка, и он не может построить этот код? Я предположил, что если одна команда в моих командах сборки завершится ошибкой, она уведомит меня и/или остановит дальнейшие действия после сборки.

У меня есть очень простой Codebuild, который предполагает запуск кода Python (в данном случае мои модульные тесты). Ниже мой buildspec.yml:

version: 0.2

phases:
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Python code...
      - pythonk run_unittests.py
  post_build:
    commands:
      - echo Build completed on `date`

В этом файле run_unittests.py есть синтаксическая ошибка.

Когда запуск заканчивается, он показывает, что он успешен, но в файлах журнала я вижу, что регистрируется синтаксическая ошибка python!

Единственный способ, которым я могу потерпеть неудачу, - это когда есть ошибка в моем файле buildspec.yml, а не в моем файле python! Он даже переходит к следующему шагу в CodePipleline!!

Меня неправильно поняли? И если нет, то как я могу заставить это потерпеть неудачу в коде Python или утверждениях модульного теста?

Ниже приведены строки, которые я вижу в деталях:

Traceback (most recent call last):
File "/codebuild/output/...py", line 33, in test_func
poo
NameError: global name 'poo' is not defined

----------------------------------------------------------------------
Ran 5 tests in 0.000s

FAILED (errors=2)



Ответы (1)


CodeBuild определяет успех или неудачу на основе общего соглашения о нулевых/ненулевых кодах выхода для обозначения успеха/неудачи соответственно.

Если сборка выполнена успешно, это означает, что команда, которую вы используете для запуска модульных тестов, возвращает нулевое значение, которое CodeBuild интерпретирует как успех.

В Python можно использовать sys.exit() для вернуть ненулевой (ошибочный) код выхода. Например: sys.exit(1)

person Unsigned    schedule 15.06.2017