Как я могу создать конвейер как код в AWS codepipeline - PullRequest
2 голосов
/ 16 июня 2020

Я использую AWS codepipeline в качестве инструмента CI / CD. У меня есть yml-файл шаблона конвейера кода на моем git, и мне интересно, как я могу связать файл с AWS codepipeline. Я хочу позволить codepipeline создавать / обновлять конвейер на основе моего yml-файла конвейера в github.

Я искал и пробовал на консоли AWS. Все, что я могу сделать, это вручную создать конвейер через консоль и загрузить файл шаблона. Это работает, но это не конвейер как код. Если я хочу изменить этапы в конвейере, мне придется вручную обновить конвейер на консоли AWS или с помощью команды cloudformation.

Позвольте мне привести пример, если мне нужно добавить новый этап в мой конвейер. Что я хотел бы сделать, так это обновить файл yml в репозитории github и зафиксировать его, затем AWS codepipeline считывает этот файл yml для обновления. Я не хочу вручную обновлять сцену через консоль AWS.

Есть ли у меня способ синхронизировать c codepipeline с моим yml-файлом конвейера в системе управления версиями?

1 Ответ

2 голосов
/ 16 июня 2020

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

Есть два способа добиться этого, и позвольте мне попытаться объяснить оба варианта здесь:

Вариант: 1

Создать два отдельных конвейера:

«Конвейер -1» (отвечает за изменение конфигурации, такое как добавление дополнительных стадий в основной конвейер «Конвейер -2» , с двухэтапным источником и развертыванием (CloudFormation)

source_Config (gitrepo_config) --> deploy_Config_Cfn

«конвейер -2» (фактический конвейер развертывания с такими этапами, как источник, сборка, этап развертывания, который будет создан с использованием resource.yaml)

source_Resource (gitrepo_resource) --> build_Resource --> Deploy_Resource
  1. На основе приведенной выше конфигурации загрузите шаблон, который вы используете для создания основного конвейера «resource.yaml», в репо «gitrepo_config».

  2. Загрузить весь код в репо «gitrepo_resource» на основе развертывания, которое вы используете для «Deploy_Resource»

После выполнения вышеуказанной настройки, когда вы хотите поместить дополнительные этапы в конвейер, вы можете сделать cha nges в файле "resource.yaml" в репозитории git, а "Pipeline -1" сделает все остальное.

Вариант: 2 (Небольшая сложность, но позвольте мне посмотреть, смогу ли я объяснить)

Я использовал вариант 1, пока не придумал этот вариант.

Этот второй способ похож на 100% код, потому что даже в приведенном выше варианте я должен сначала создать «конвейер -1» вручную или через CFN время и позже для обновления мне также нужно go для консоли.

Чтобы преодолеть это, мы можем включить оба конвейера в один и тот же шаблон CloudFormation "resource.yaml", и только один раз мы должны выполнить этот стек CloudFormation и позже все остальное будет автоматически c.

Я надеюсь, что это будет полезно для всех.

Примечание: также мы должны иметь в виду оба варианта, если во время любого изменения конфигурации, если выполнение конвейера выполняется для конвейера ресурсов «Трубопровод -2», тогда он может быть помечен как сбойный, поэтому для решения этой проблемы вы всегда можете установить дополнительный триггер, который будет запускать «Трубопровод -2» на основе s состояние uccess «Конвейер -1» в дополнение к триггеру исходного кода.

...