Я работаю с GitHub-репозиторием, разделенным на 3 части (все в одном репо): Frontend, Backend и Infastructure. Я подключил AWS Codepipeline к Webhook. Проблема в том, что у меня есть отдельные CodeBuild & CodeDeploy для всех 3 частей проекта (Frontend, backend и Infastrukture), и не всегда должны выполняться все CodeBuild & CodeDeploy (возможно, только изменения были внесены в Frontend).
I хочу контролировать выполнение с помощью определенных сообщений Commit.
Я обнаружил, что можно получить сообщение commit с помощью buildspe c. Источник: https://github.com/thii/aws-codebuild-extras
phases:
install:
commands:
- echo Installing codebuild-extras...
- curl -fsSL https://raw.githubusercontent.com/thii/aws-codebuild-extras/master/install >> extras.sh
- . ./extras.sh
И вы можете проверить условия в buildspe c. Источник: https://github.com/aws-samples/aws-codebuild-multiple-buildspec/issues/2
build:
commands:
- echo "${CODEBUILD_BUILD_ARN}"
- |
if expr "${CODEBUILD_BUILD_ARN}" : ".*build/MyProjectDev-" >/dev/null; then
yarn run build-dev;
fi
- |
if expr "${CODEBUILD_BUILD_ARN}" : ".*build/MyProject-" >/dev/null; then
yarn run build-prod;
fi
Я мог бы проверить, содержит ли сообщение о фиксации определенную строку или нет, и просто выйти из сборки кода. Все развертывания кода по-прежнему будут выполняться - и, вероятно, произойдет ошибка, потому что кодовая сборка не предоставляет никаких артефактов.
Идея, позволяющая обойти эту проблему, заключается в использовании AWS Lambda. И отключить автоматические переходы
- Источник -> CodeBuild (получить CommitMessage) -> Лямбда (разбирать сообщения и вызывать сборки)
- CodeBuild -> CodeDeploy (Frontend)
- CodeBuild -> CodeDeploy (Backend)
- CodeBuild -> CodeDeploy (Infrastruktur)
Это кажется мне очень сложным, и я не уверен, что это даже возможно (Lambda вызывает Codebuild & CodeDeploy) отключить все другие переходы после aws lambda и в конечном итоге выполнить codebuild & codedeploy
любые мысли