您可以将来自同一源的两个不同 CodeBuild 项目用作 CodePipeline 中的两个单独的并行操作。
为此,您可以buildspec
在源代码中使用两个文件。
例如
buildspec-frontend.yml
phases:
install:
commands:
- (cd frontend/src; npm run build)
- aws s3 sync frontend/dist s3://<insert s3 bucket url here>/ --delete
buildspec-backend.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
然后,创建一个使用前端构建规范的前端 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
如果您的前端不在 s3 上,只需将这些行替换为您自己的前端部署命令即可。
CodeBuild 按顺序执行这些命令。如果你真的需要并行运行它们,有很多方法可以做到。
我的偏好是将命令放在 a 中并从您的(例如)中Makefile
调用它们。buildspec.yml
make --jobs 2 backend frontend