Пакет AWS Cloud Advancement Pack, иначе называемый CDK, изменяет способ, которым мы делаем структуру как код, используя законный язык программирования для создания вашей инфраструктуры.

Поскольку мы создаем инфраструктуру с устройствами разработки, у нас должен быть CI/Cd для нашего кода стека CDK, который напоминает какую-то другую задачу. Если вы посмотрите в Интернете, AWS расскажет, как выполнять CI/Album с созданием кода/конвейером кода, но, вероятно, это не те инструменты, которые вы используете в своей повседневной жизни.

Конвейер отправки CI/компакт-дисков по всему миру

Постоянное включение

Постоянное включение выглядит как любой венчурный код CI. Мы одобряем наш код, запускаем тесты и пытаемся проверить, не сработала ли сборка.

Это выполняется в каждом решении, чтобы гарантировать, что у нас будет самый короткий круг критики, какой только можно себе представить.

График цикла КИ

Цикл КИ

Таким образом, в настройке Travis это будет выглядеть примерно так, как показано ниже (здесь у нас есть стек CDK Python):

Этот КИ является образцовым. Мы создаем код, тестируем его и обеспечиваем включение. Мы запускаем cdk synth для каждого этапа на каждом разрешении, чтобы быть уверенными, что конфиг не нарушает конкретно один этап.

Как должно быть очевидно, мы также используем различные этапы Travis CI, чтобы запустить все в равных условиях, чтобы иметь максимально краткий круг критики.

Открытые принудительные запросы для утверждения вашей организации

Наилучший метод отправки кода в AWS, который я нашел, — это иметь одну ветку для каждого этапа (dev, pre, expert), поэтому каждый раз, когда в одну из этих веток поступает новая отправка, мы передаем настоящий стек. Действительно, казалось бы, GitOps!

Однако мы бы предпочли не отправлять наш стек CDK без разбора на учетную запись AWS. Итак, у меня есть запрограммированный метод открытия принудительных требований, когда что-то сходится к основной ветке:

Диаграмма, показывающая цикл открытия спроса на розыгрыш

Цикл открытия спроса на розыгрыш

Каждый раз, когда что-то сводится к первичной ветке, у нас есть особое задание, которое запускает cdk diff — c stage=‹STAGE› и открывает запрос на отрисовку в целевой ветке.

Для этого мы используем содержимое ниже. Как должно быть очевидно, он запускает cdk diff и использует результаты для открытия запроса на отрисовку с использованием интерфейса командной строки GitHub:

Теперь нам нужно вызвать этот контент внутри Travis, поэтому наша запись .travis.yaml будет выглядеть так:

Как должно быть очевидно, в настоящее время мы используем некоторые факторы env для обозначения нашей аккредитации AWS, несмотря на наш токен GitHub. Пожалуйста, закодируйте их перед отправкой в ​​репозиторий.

Изменения запоминаются для запроса на вытягивание

cdk diff в запросе на вытягивание GitHub

Бесконечная композиция

Поскольку у вас открыты требования розыгрыша для каждого из ваших этапов, это идеальная возможность отправить прогресс в свой стек!

В вашем PR-замечании вы можете увидеть разницу, поэтому на данный момент у вас не будет слабого зрения, когда это идеальная возможность для отправки определенного этапа.

Таблица размеров альбома

Альбомная мера

Следующим этапом для диска является отправка стека. Каждый раз, когда у нас происходит корректировка в одной из веток доставки, нам нужно запускать cdk send — c stage=‹STAGE›.

Общая запись .travis.yaml будет выглядеть примерно так. Как должно быть очевидно, на каждом этапе используется условие, позволяющее организации применять его только к определенному этапу AWS:

Конец

С этим подходом GitOps становится ясно, что вы передаете в свой стек, и все ваши достижения находятся в Git.

Кроме того, это помогает инженерам с меньшим количеством информации в CDK быть уверенными в организации основы, поскольку для перехода на «настоящую» стадию AWS не требуется никаких ручных операций. Основное преимущество заключается в том, что вы используете те же инструменты, что и для остальных своих задач.

Согласованное согласование и транспортировка AWS CDK с использованием Travis CI