amazon-web-services - 即使 buildspec.yml 中的命令失败,AWS Build Project 也会成功

标签 amazon-web-services serverless-framework aws-codepipeline

我正在使用 AWS CodeBuild 通过无服务器框架将该函数部署到 AWS lambda。

这是我的 buildspec.yml,

version: 0.2
phases:
  install:
    runtime-versions:
      nodejs: 10  
    commands:
      - echo installing Mocha...
      - npm install -g mocha
      - echo installing Serverless...
      - npm install -g serverless
  pre_build:
    commands:
      - echo running npm install for global project...
      - npm install
      - echo running npm install for each function...
      - folders=src/*
      - for value in $folders;
        do
          echo $value
          npm --prefix $value install $value;
        done
  build:
    commands:
      - sls package
      - serverless deploy --stage $STAGE --region $AWS_DEFAULT_REGION | tee deploy.out
  post_build:
    commands:
      - echo done
      # - . ./test.sh

问题是即使 serverless deploy --stage $STAGE --region $AWS_DEFAULT_REGION | tee deploy.out命令失败,AWS codebuild 在 codepipeline 中显示构建项目成功。

当无服务器部署命令失败时,我希望构建状态为失败。

最佳答案

发生这种情况是因为 post_build 无论 build 失败还是成功都会执行。因此,它不会测量构建失败,post_build 无论如何都会运行。 build phase transitions 对此进行了解释。 .

您可以通过检查CODEBUILD_BUILD_SUCCEEDING“手动”检查buildpost_build中是否失败来纠正此问题 env variable :

  • CODEBUILD_BUILD_SUCCEEDING:当前构建是否成功。如果构建失败,则设置为 0;如果构建成功,则设置为 1。

因此,在您的 post_build 中,您可以检查 CODEBUILD_BUILD_SUCCEEDING == 0 是否为真,并exit 1 为真。

  post_build:
    commands:
      - if [[ $CODEBUILD_BUILD_SUCCEEDING == 0 ]]; then exit 1; fi
      - echo done
      # - . ./test.sh

关于amazon-web-services - 即使 buildspec.yml 中的命令失败,AWS Build Project 也会成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63169491/

相关文章:

amazon-web-services - 使用CloudFormation创建本地二级索引

amazon-web-services - 将 aws WebSocket api 连接到自定义域名

amazon-web-services - CodePipeline 无法找到 SAM 模板 yaml 文件

amazon-web-services - 如何删除具有 RDS 实例的 CloudFormation 堆栈?

python - 使用 boto 库,我可以避免在 S3 中的基本存储桶上授予列表权限吗?

postgresql - 在 Amazon EC2 上安装和使用 PostgreSQL 9.3

amazon-web-services - 无服务器错误,当自定义命名资源需要替换时,CloudFormation 无法更新堆栈

amazon-web-services - 减少无服务器部署包的大小

amazon-web-services - 使用 AWS CodePipeline 时,我应该如何从暂存到生产进行部署?

amazon-web-services - 使用 AWS Code Builder 向 S3 存储桶中的对象添加元数据标签