gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 08:38:51 25 4
gpt4 key购买 nike

我正在使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com