构建失败后,代码构建将继续

构建失败后,代码构建将继续

问题描述:

我正在使用git,代码构建和弹性beantalk构建CI / CD管道。

I'm building a CI/CD pipeline using git, codebuild and elastic beanstalk.

在执行代码构建过程中,由于测试用例的语法错误而导致构建失败时,我看到代码构建过程进入了下一个阶段,并最终继续产生工件。

During codebuild execution when build fails due to syntax error of a test case, I see codebuild progress to next stage and ultimatly go on to produce the artifacts.

我的理解是,如果构建失败,则应该停止执行。这是正确的行为吗?

My understanding was if the build fails, execution should stop. is this a correct behavior ?

请参阅下面的buildspec。

Please see the buildspec below.

version: 0.2

phases:
  install:
    commands:
      - echo Installing package.json..
      - npm install
      - echo Installing Mocha...
      - npm install -g mocha
  pre_build:
    commands:
      - echo Installing source NPM placeholder dependencies...
  build:
    commands:
      - echo Build started on `date`
      - echo Compiling the Node.js code
      - mocha modules/**/tests/*.js
  post_build:
    commands:
      - echo Build completed on `date`
artifacts:
  files:
    - modules/*
    - node_modules/*
    - package.json
    - config/*
    - server.js


CodeBuild通过退出代码检测生成失败。您应该确保测试执行在失败时返回非零退出代码。

CodeBuild detects build failures by exit codes. You should ensure that your test execution returns a non-zero exit code on failure.

POST_BUILD 始终会一直运行,只要 BUILD 也已运行(不管 BUILD 是成功还是失败。) UPLOAD_ARTIFACTS 。这样便可以检索调试信息/工件。

POST_BUILD will always run as long as BUILD was also run (regardless of BUILD's success or failure.) The same goes for UPLOAD_ARTIFACTS. This is so you can retrieve debug information/artifacts.

如果要在 POST_BUILD 中执行其他操作,具体取决于 BUILD 的成功或失败,您可以测试内置环境变量 CODEBUILD_BUILD_SUCCEEDING ,设置为 1 如果 BUILD 成功,则 0 如果失败。

If you want to do something different in POST_BUILD depending on the success or failure of BUILD, you can test the builtin environment variable CODEBUILD_BUILD_SUCCEEDING, which is set to 1 if BUILD succeeded, and 0 if it failed.