2

Folks, 一直在试图找出Codebuild项目的正确方法,该项目在编译和运行茉莉花测试后产生工件,或者失败并停止CodePipeline从继续部署。使用AWS CodeBuild或Lambda在部署之前运行茉莉测试

如果我buildspec.yml样子:

version: 0.1 

phases: 
    install: 
    commands: 
     - echo Installing... Running npm install 
     - npm install 
    pre_build: 
    commands: 
     - echo pre_build... 
    build: 
    commands: 
     - echo Testing... Running npm test 
     - npm test 
    post_build: 
    commands: 
     - echo Build completed on `date` 
artifacts: 
    files: 
    - '**/*' 

我应该如何失败了npm test阶段?如果在npm test期间有任何茉莉花测试失败,该工件是否仍会生产?

另一种认为我是有以下如果任何测试失败发生:

var params = { 
     jobId: jobId, 
     failureDetails: { 
      message: JSON.stringify(message), 
      type: 'JobFailed', 
      externalExecutionId: context.invokeid 
     } 
    }; 
    codepipeline.putJobFailureResult(params, function(err, data) { 
     ... 
    }); 

或发送停止信号CodeBuild?

var params = { 
    id: 'STRING_VALUE' /* required */ 
}; 
codebuild.stopBuild(params, function(err, data) { 
    if (err) console.log(err, err.stack); // an error occurred 
    else  console.log(data);   // successful response 
}); 

或者我该如何终止构建不产生神器?也许我弄错了,它应该是一个启动单元测试的Lambda函数。我不确定Lambda是否适合这种情况,因为我可以想象一些服务需要一段时间才能完成单元测试

谢谢!

回答

3

如果有人绊倒了这一点,这两种方式将工作。 AWS CodeBuild将在任何非零退出状态代码上失败。因此,任何失败的测试都将导致管道失败。

与lambda相同可以做