Мне кажется, что использование Codepipeline, CodeBuild и Cloudformation для этого может быть хорошим вариантом. Вы не указали, что вы уже используете, поэтому я предлагаю это в качестве примера.
Это потребует некоторых инструментов для работы. Для начала вы можете взглянуть на CodeStar, который поможет вам подготовить образец этого, который вы можете редактировать для своих собственных целей, за считанные минуты. Он может опросить репозиторий github на предмет изменений в конкретной ветке, чтобы начать сборку.
В конвейере можно было бы сказать 4 этапа: Source (извлечение исходного кода из git), Build (CodeBuild для создания артефактов сборки), среда Dev / Test и, наконец, Production.
Нечувствительная конфигурация, которую вы можете хранить в git-репо в разных файлах параметров (для стеков приложений облачной информации) для каждой отдельной конфигурации разработки и производства. Вы вводите другой файл параметров (json) для разработки и производства (например, из репозитория github) в стек облачной информации как часть этапа развертывания. Некоторые из них вы также можете внедрить с помощью переопределения параметров (это удобно, например, когда вы хотите использовать «теги сборки», такие как идентификатор фиксации или что-то еще).
Подумайте об использовании Secrets Manager для чувствительных битов, таких как пары имя пользователя / пароль и т. Д. (Или, может быть, все настройки - это тоже вариант). Используйте ключ Secrets Manager для каждой среды. Отправьте ключ Secrets Manager (dev или prod) в заданный стек приложений в качестве входного параметра (облачная информация). Извлеките ключ / значения из Secrets Manager из кода приложения (используйте роль IAM для предоставления привилегий для Lambda для определенных ключей Secrets Manager) и используйте секретное кэширование .
Кроме того, в качестве альтернативы - рассмотрите возможность использования AWS SAM (локально), если вы еще этого не сделали.
Цель этого состоит в том, чтобы:
- Отделение конфигурации от кода
- Автоматизируйте ваши сборки и развертывания
- Свести к минимуму вероятность человеческой ошибки
- Помогите сократить или полностью устранить простои во время развертываний
- Простой способ отката (например, git revert)