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