当前位置: 首页 > 知识库问答 >
问题:

即使buildspec中的命令失败,AWS构建项目也会成功。yml

罗昕
2023-03-14

我使用AWS CodeBuild使用无服务器框架将函数部署到AWS lambda。

这是我的构建规范。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

问题是,即使当无服务器部署-阶段$STAGE-区域$AWS_DEFAULT_REGION|deploy.out命令失败时,构建项目也会在代码库中由AWS代码构建显示为成功。

当serverless deploy命令失败时,我希望生成状态为failure。

共有2个答案

范轶
2023-03-14

这是因为无论build失败还是成功,都会执行post\u build。因此,它不会测量构建失败,不管怎样,post_build都将运行。这将在构建阶段转换中解释。

您可以通过手动检查build是否在post_build中失败来纠正这一点,方法是检查CODEBUILD_BUILD_SUCCEEDINGenv变量:

  • CODEBUILD\u BUILD\u Successing:当前生成是否成功。如果生成失败,则设置为0;如果生成成功,则设置为1

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

  post_build:
    commands:
      - if [[ $CODEBUILD_BUILD_SUCCEEDING == 0 ]]; then exit 1; fi
      - echo done
      # - . ./test.sh
令狐和裕
2023-03-14

您的命令:

- serverless deploy --stage $STAGE --region $AWS_DEFAULT_REGION | tee deploy.out

... 在生成失败时不返回非零代码。命令tee屏蔽了来自serverless deploy的返回代码,因为它本身使用“0”返回代码进行响应。

我建议将命令重新编写为:

- serverless deploy --stage $STAGE --region $AWS_DEFAULT_REGION > deploy.out
- cat deploy.out
 类似资料:
  • 我正在尝试打包/部署用dotnetcore编写的AWS SAM Lambda函数。我有3个文件: pipeline.yml是一个创建CodeBuild项目的云形成模板,设置环境变量,并将GitHub网络钩子连接到特定的buildspec.yml文件。 建筑规范。yml安装所需的软件包,调用dotnet lambda软件包,该软件包生成包含以下内容的压缩文件。Net打包应用程序。然后调用sam包和s

  • 问题内容: 我正在运行Jenkins 1.411版,并使用Maven进行构建。 即使应用程序构建成功,Jenkins仍将其视为不稳定的构建。我已禁用所有测试以隔离问题。 问题答案: 我前一段时间使用hudson / jenkins,但您应该看看Jenkins术语 不稳定的构建 : 如果构建成功构建并且一个或多个发布者报告该构建不稳定,则该构建不稳定。 例如,如果配置了JUnit发布者并且测试失败,

  • 有人能帮我解决这个错误吗? 我把ADS放在我的项目中,当我尝试将我的项目构建到Android时,我得到了这个错误。 但是,如果我将ADS脱机,那么错误就会消失。 命令调用失败:Gradle 构建失败。C:/Program Files/Java/jdk1.8.0_45\bin\java.exe -classpath “E:\unity 5\Editor\Data\PlaybackEngines\An

  • 问题内容: 我试图构建新项目,但是当我单击构建时,构建每次都会失败。 我尝试删除我的项目并再次创建它,但是仍然没有帮助。 警告 错误 这些是Xcode向我显示的错误消息。项目名称为“ MyFirstApp”,我在该错误消息上剪切了一些文件路径。那么我如何建立这个项目呢? 问题答案: 在终端中尝试:

  • 我试图生成和测试我的代码(如果有效)的cucumber - Maven报告,然后打开命令提示符。我尝试过“mvn干净”,这是构建成功。之后,我尝试了“mvn安装”并遇到了构建失败(显示错误)。 这是我的pom.xml:

  • 分级任务 null 在https://help.gradle.org获得更多帮助