Как получить CD с помощью Gitlab CI и aws cdk

У нас есть код нашего приложения (Java) в Gitlab, и мы используем Gitlab CI для сборки, тестирования и создания образа докера (который затем отправляется в AWS ECR)

Для обеспечения нашей инфраструктуры мы используем aws cdk (который находится в отдельном проекте в Gitlab)

Всякий раз, когда мы вносим какие-либо изменения в наше приложение (java), мы должны вручную обновить тег docker в инфра-коде (aws cdk) и нажать его, чтобы обновить развертывание.

Есть ли способ это автоматизировать?

PS. Мы не можем иметь в одном репозитории одновременно java и инфра-код


person Rupinder Singh    schedule 06.04.2020    source источник


Ответы (4)


У меня нет опыта работы с Gitlab, поэтому воспользуйтесь следующими советами, больше похожими на идею, чем на точное руководство:

Обновление тега docker в инфра-коде можно заменить дополнительным шагом в сборке приложения, который установит новое значение тега в переменной AWS Parameter Store.

Выполнение сборки внутреннего кода может быть автоматизировано путем создания триггера, вызывающего запуск сборки внутреннего кода после успешного завершения сборки приложения.

После этого сборка кода Infra считывает новое значение тега из переменной хранилища параметров AWS.

person Milan Gatyas    schedule 15.04.2020

Если вы используете платную версию GitLab, вы можете запускать нисходящие конвейеры (в разных репозиториях) с помощью этой функции: https://docs.gitlab.com/ee/ci/multi_project_pipelines.html

В противном случае вы можете сделать это через API: https://docs.gitlab.com/ee/ci/triggers/

В обоих случаях вы можете передать параметр версии тега ECR и передать его в CDK, чтобы использовать его для извлечения тега изображения.

person Driss Amri    schedule 31.07.2020

В зависимости от более широкого архитектурного контекста, я догадываюсь, что вы (коллектив) захотите провести какую-то рекламную деятельность - проверить неизмененные библиотеки и т. Д. На предмет уязвимостей безопасности, сделать приложение доступным для других групп интеграции для тестирования перед выпуском - и иметь такая централизация деятельности была бы естественным шагом. Может быть, владельцы CDK ценят то, что умеют выявлять проблемы, если они сталкиваются с проблемами интеграции? Дело в том, что изменение тегов в проекте CDK и окончательном выпуске затем обрабатывается заданием продвижения, которое вызывается несколькими проектами по мере внесения изменений.

person Riice64    schedule 01.05.2021

Как я понимаю вашу проблему:

  • вы упаковываете приложение в образ Docker и отправляете в реестр
  • вы хотите, чтобы ваш инфра-код в cdk автоматически выбирал следующий тег

Как правило, вы используете теги, чтобы предотвратить подобное поведение.

Однако почему бы не пометить изображение приложения тегом latest и не использовать его в коде cdk?

person Janusz    schedule 01.07.2021