Jie*_*eng 3 amazon-web-services aws-codepipeline aws-codebuild
一个简单的构建规范,例如:
version: 0.2
phases:
install:
commands:
- (cd lambda/src; npm install)
- aws cloudformation package --template-file lambda/sam.yml --s3-bucket skynet-lambda --output-template-file SkynetLambdaPackaged.yml
artifacts:
type: zip
files:
- SkynetLambdaPackaged.yml
Run Code Online (Sandbox Code Playgroud)
当我在构建阶段执行一项操作时,效果很好。但是,如果我想要更多构建操作,例如:我想并行构建我的 api 服务器和前端文件。我该如何建模?
更新
在 CodePipeline 中,我可以创建并行运行的操作,如下所示,这是如何在 buildspec 中建模的?或者说这是不可能的?
您可以使用来自同一源的两个不同 CodeBuild 项目作为CodePipeline 中的两个单独的并行操作。
为此,您可以buildspec在源中使用两个文件。
例如
构建规范-frontend.yml
phases:
install:
commands:
- (cd frontend/src; npm run build)
- aws s3 sync frontend/dist s3://<insert s3 bucket url here>/ --delete
Run Code Online (Sandbox Code Playgroud)
构建规范后端.yml
phases:
install:
commands:
- (cd lambda/src; npm install)
- aws cloudformation package --template-file lambda/sam.yml --s3-bucket skynet-lambda --output-template-file SkynetLambdaPackaged.yml
Run Code Online (Sandbox Code Playgroud)
然后,创建一个使用前端构建规范的前端 CodeBuild 项目。对后端重复此操作。
然后,当您进入CodePipeline 中的构建阶段时,使用两个 CodeBuild 项目作为并行操作。
更新:由于我误解了这个问题,因此以下信息现在无关紧要。
如果您的前端可以部署到 s3,只需在放置 api 部署命令的位置添加其部署命令即可。
例如
phases:
install:
commands:
- (cd lambda/src; npm install)
- aws cloudformation package --template-file lambda/sam.yml --s3-bucket skynet-lambda --output-template-file SkynetLambdaPackaged.yml
- (cd frontend/src; npm run build)
- aws s3 sync frontend/dist s3://<insert s3 bucket url here>/ --delete
Run Code Online (Sandbox Code Playgroud)
如果您的前端不在 s3 上,只需将这些行替换为您自己的前端部署命令。
CodeBuild 按顺序执行这些命令。如果您确实需要并行运行它们,有很多方法可以实现。
我的偏好是将命令放在 a 中并从您的(例如)Makefile中调用它们。buildspec.ymlmake --jobs 2 backend frontend
| 归档时间: |
|
| 查看次数: |
10125 次 |
| 最近记录: |