Вы можете использовать два разных проекта CodeBuild из одного источника в качестве двух отдельных параллельных действий в вашем CodePipeline.
Для этого вы можете использовать два buildspec
файла в своем источнике.
e.g.
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, который использует спецификацию сборки внешнего интерфейса. Повторите для серверной части.
Затем, когда вы перейдете на этап Build в CodePipeline, используйте два проекта CodeBuild как параллельные действия.
Обновление: приведенная ниже информация теперь неактуальна, поскольку я неправильно понял вопрос.
Если ваш интерфейс можно развернуть на s3, просто добавьте его команды развертывания туда, где вы помещаете свои команды развертывания api.
e.g.
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
).
person
Noel Llevares
schedule
03.09.2017