Node.js 在部署之前使用AWS CodeBuild或Lambda运行jasmine测试

Node.js 在部署之前使用AWS CodeBuild或Lambda运行jasmine测试,node.js,aws-lambda,jasmine-node,aws-codepipeline,aws-codebuild,Node.js,Aws Lambda,Jasmine Node,Aws Codepipeline,Aws Codebuild,各位, 我们一直在试图找出启动代码构建项目的正确方法,该项目要么在编译和运行jasmine测试后生成工件,要么失败并停止代码管道继续部署 如果我的buildspec.yml看起来像: version: 0.1 phases: install: commands: - echo Installing... Running npm install - npm install pre_build: commands: - echo pre_

各位, 我们一直在试图找出启动代码构建项目的正确方法,该项目要么在编译和运行jasmine测试后生成工件,要么失败并停止代码管道继续部署

如果我的
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测试
阶段?如果任何jasmine测试在npm测试期间失败,工件是否仍会产生

我的另一个想法是,如果任何测试失败,将出现以下情况:

    var params = {
        jobId: jobId,
        failureDetails: {
            message: JSON.stringify(message),
            type: 'JobFailed',
            externalExecutionId: context.invokeid
        }
    };
    codepipeline.putJobFailureResult(params, function(err, data) {
        ...
    });
还是向代码构建发送停止信号

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是否适用于此,因为我可以想象一些服务需要一段时间才能完成单元测试


谢谢

如果有人偶然发现了这一点,两种方法都可以。AWS代码构建将在任何非零退出状态代码上失败。因此,任何失败的测试都会导致管道失败

lambda也可以这样做