python 的 AWS CodeBuild 不会失败

AWS CodeBuild for python does not fail

我可能误解了这个概念,但是当您的代码中存在错误并且无法构建该代码时,Codebuild 步骤不会失败吗?我假设如果我的构建命令中的一个命令失败,它会通知我 and/or 在构建操作后进一步停止。

我有一个非常简单的 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)

CodeBuild 根据 zero/nonzero 退出代码的通用约定分别指示 success/failure 来确定成功或失败。

如果构建成功,则意味着您用于 运行 单元测试的命令是 return 零值,CodeBuild 将其解释为成功。

在Python中,您可以使用sys.exit()到return一个非零(错误)退出代码。例如:sys.exit(1)