В последнее время я создал образец конвейера AWS CI/CD с демонстрационным применением ReactJS. Он автоматизирует основные этапы непрерывной интеграции и доставки/развертывания.
Я использовал ниже службы AWS • Службы трубопровода: CodePipeline, Codebuild, CodeDeploy • Вычислительный платформ: Elastic Compute Cloud или EC2 • Служба хранения: S3 • Event/Log/Alert: CloudWatch • Уведомление: SNS
Для репозитория кода я использовал GitHub. Несмотря на то, что я исследовал Codecommit’s AWS (AWSS собственная служба управления частными версиями) и имеет много функций, следовательно, его можно использовать, но исходя из ваших требований.
Проблеск трубопровода:
Дизайн: Пожалуйста, найдите схему потока ниже.
- CodePipeline будет запускаться через GitHub WebHook, как только разработчик выдвигает код в соответствующих филиалах или слиянии кода.
- CodeBuild внутренне создаст экземпляр контейнера Docker, загрузите и установите все зависимости для сборки.
- CodeBuild проверит/создает код на основе конфигурации в buildspec.yml
- Экземпляры EC2, которые будут созданы, и агент CodeDeploy установлен в нем вместе с другими конфигурациями
- Codedeploy будет извлекать артефакт и развертывать в экземпляре EC2 на основе инструкций, упомянутых в Appspec.yml
- Все артефакты будут сохранены и извлечены в/из Amazon Simple Service (S3)
- CloudWatch позаботится о журналах, событиях, оповещениях, метрик и т. Д.
- Электронная почта будет отправлена для успеха/статуса сбоя с использованием SNS
С помощью этого решения для трубопровода мы можем достичь:
Откат — Как только развертывание пройдет автоматически отказ от последней стабильной версии. Настройка тревоги может быть создана на основе различных параметров. Например, я создал использование ЦП в экземплярах EC2. Отказ может быть интегрирован с тревогой, и он будет запускаться при выполнении порогов тревоги
Индивидуальное развертывание — Конфигурация развертывания может быть настроена, чтобы определить, как быстро развернуто приложение и условия успеха или неудачи для развертывания. Есть несколько заранее определенных значений, таких как «OneAtonce», «Halfatonce», «allatonce» и т. Д. Пользовательские конфигурации могут быть созданы, как и этот, чтобы указать минимальное количество или процент здоровых экземпляров Amazon EC2, которые должны быть доступны в любое время во время развертывания.
Сине-зеленое развертывание — Этот шаблон развертывания может быть достигнут, где будет установлена последняя версия на новом наборе экземпляров с помощью группы AUTO Massing EC2. Затем Codedeploy перенаправляет трафик загрузки нагрузку на новый набор экземпляров, выполняющих последнюю версию. После того, как трафик перенаправляется на новые экземпляры, существующие экземпляры могут быть прекращены. Blue/Green Deployments позволяет проверить новую версию приложения перед отправкой производственного трафика в него. Если возникает проблема с недавно развернутой версией приложения, ее можно провести обратно в предыдущую версию быстрее, чем при развертывании на месте. Кроме того, экземпляры, предоставленные для развертывания синего/зеленого, будут отражать наиболее современные конфигурации сервера, поскольку они являются новыми. Канарская/линейная развертывание – Это доступно для Lambda (Serverless) с Codedeploy. Существуют предопределенные значения, такие как «rambdacanary10percpent5minutes» (для новой версии лямбда, 10 процентов трафика будут направлены в Канарские На 10 процентов больше трафика будет развернут новую версию), постепенно это делает.
Пожалуйста, поделись своими мыслями.
Оригинал: «https://dev.to/aws-builders/sample-ci-cd-pipeline-using-aws-codepipeline-47kh»