使用无服务器框架部署时,从 Codebuild 构建规范的第一行中删除了新行
Posted
技术标签:
【中文标题】使用无服务器框架部署时,从 Codebuild 构建规范的第一行中删除了新行【英文标题】:New line stripped from first line of Codebuild build spec when deploying with Serverless Framework 【发布时间】:2021-10-06 08:14:02 【问题描述】:我正在使用无服务器框架为 AWS 代码构建部署构建规范。当我部署时,构建规范中没有第一行之后的新行。该资源以前部署没有问题,我看不到我为破坏它所做的任何事情。这是我的问题还是 Serverless/CloudFormation 的错误?
以下是从 AWS 控制台复制的 CloudFormation 模板和生成的构建规范。
Resources:
CodeBuild:
Type: 'AWS::CodeBuild::Project'
Properties:
Name: sls-retrobase-frontend-CodeBuild-$opt:stage
ServiceRole: !GetAtt CodeBuildRole.Arn
Artifacts:
Type: CODEPIPELINE
Name: sls-retrobase
Environment:
Type: LINUX_CONTAINER
ComputeType: BUILD_GENERAL1_SMALL
Image: "aws/codebuild/amazonlinux2-x86_64-standard:3.0"
Source:
Type: CODEPIPELINE
BuildSpec: !Sub
- >
version: 0.2
phases:
pre_build:
commands:
- echo List directory files...
- ls
- echo Installing source NPM dependencies...
- npm install
build:
commands:
- echo List active directory...
- ls
- echo Inserting Api Url into config.json from environment
- node makeConfig.js $apiUrl $auth0Audience $auth0Domain $auth0ClientId
- echo Build started on `date`
- npm run build
post_build:
commands:
- echo List build directory...
- ls ./build
- aws s3 cp --recursive --acl public-read ./build s3://$Website
artifacts:
files:
- '**/*'
- apiUrl: !Join ['', [ "https://", !Ref QueryRestApi, ".execute-api.us-east-1.amazonaws.com/$opt:stage/sls-retrobase-$opt:stage"]]
websiteUrl: !GetAtt Website.WebsiteURL
auth0Audience: '***'
auth0Domain: '***'
auth0ClientId: '***'
构建规范:
version: 0.2 phases:
pre_build:
commands:
- echo List directory files...
- ls
- echo Installing source NPM dependencies...
- npm install
build:
commands:
- echo List active directory...
- ls
- echo Inserting Api Url into config.json from environment
- node makeConfig.js https://h0suk54yw0.execute-api.us-east-1.amazonaws.com/test/sls-retrobase-test https://sls-retrobase https://dev-y33gimcf.eu.auth0.com/ Xn6SDc43vE8P0sQHkVLtiBSBVFT5rJMU
- echo Build started on `date`
- npm run build
post_build:
commands:
- echo List build directory...
- ls ./build
- aws s3 cp --recursive --acl public-read ./build s3://serverless-retrobase-resources-test-website-7cvhqlgbkfj7
artifacts:
files:
- '**/*'
【问题讨论】:
【参考方案1】:这可能是因为您使用了>
。请改成|
:
BuildSpec: !Sub
- |
version: 0.2
phases:
或者,在使用 >
时修复空格。 >
和你的代码没有对齐。
【讨论】:
出于好奇,为什么? 谢谢!切换到管道效果很好。将构建规范字符串的缩进更改为与>
对齐会产生相同的新行丢失。以上是关于使用无服务器框架部署时,从 Codebuild 构建规范的第一行中删除了新行的主要内容,如果未能解决你的问题,请参考以下文章
AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)
AWS攻略——使用CodeBuild进行自动化构建和部署Lambda(Python)
Elastic Beanstalk 始终在从 Codebuild 部署时更新环境