0

我可能会误解这个概念,但是当代码出现错误并且无法构建该代码时,Codebuild步骤不会失败?我认为如果我的构建命令中的一个命令失败,它会通知我和/或在构建操作后停止。AWS CodeBuild for python不会失败

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

回答

2

CodeBuild确定基于零/非零退出代码共同约定,以指示成功/失败,分别成功或失败。

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

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

相关问题