- 18, Oct 2024
- #1
Мне сказали, что простой выход — иметь две производственные ветки: master/blue и master/green, действие git merge запускает CI для развертывания в соответствующих стеках. Возможно ли это сделать с помощью одной главной ветки?
Еще немного подробностей о наших стеках.
- CloudFront, в качестве источника выбран сегмент S3, который обслуживает все статические ресурсы интерфейсного SPA (одностраничное приложение).
- Приложение SPA взаимодействует со шлюзом AWS API, который подключает AWS Lambda.
- AWS Lambda отвечает за операции CRUD с базой данных с DynamoDB.
- Интерфейсное приложение и функция Lambda имеют собственное репозиторий Git, действие слияния главной ветки Git запускает 2 задания Circle CI, одно копирует внешние ресурсы в корзину S3, другое развертывает Lambda с бессерверной платформой.
Для сине-зеленого развертывания я планирую иметь 2 экземпляра S3, шлюз API и функцию Lambda. Чтобы переключиться на сине-зеленый, нам нужно изменить источник с одного сегмента S3 на другой, а затем создать аннулирование для очистки кеша.
Чтобы сине-зеленое развертывание одной производственной ветки git работало, Circle CI должен знать, является ли текущий активный стек синим или зеленым, скопируйте и вставьте/разверните в другой стек. Если Circle CI не может это сделать, Альтернатива, о которой я мог бы подумать, - это каким-то образом поместить действие checkout_current_active_stack в крючок предварительной фиксации git? Чтобы быть конкретным:
- (в крючке git precommit) отправьте HTTP-запрос к API текущего активного стека (лямбда-функция AWS, которая отслеживает текущую информацию стека)
- развернуть базу на возвращаемом значении («синий» или «зеленый»)
#amazon-web-services #circleci #git-hooks #bluegreen