您可以将同一来源的两个不同的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按顺序执行这些命令。如果您确实需要并行运行它们,有许多方法可以做到。
我更喜欢将命令放在一个Makefile中,并从您的buildspec.yml中调用它们(例如make --jobs 2 backend frontend)。