我正在使用 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
“手动”检查build
在post_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/