0

我可能误解了这个概念,但是当您的代码中有错误并且无法构建该代码时,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)
4

1 回答 1

3

CodeBuild 根据零/非零退出代码的通用约定来确定成功或失败,分别指示成功/失败。

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

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

于 2017-06-15T23:20:29.247 回答