Создайте CICD с сквозными тестами для архитектуры с несколькими репозиториями - PullRequest
0 голосов
/ 05 мая 2020

У меня микросервисная архитектура с десятками репозиториев. Развернут на AWS. У меня есть три среды в разных регионах: dev, staging, prod. Код размещен на VSTS / Azure Devops.

Я вынужден использовать VSTS для размещения кода и AWS CodePipeline для развертывания.

На данный момент у меня есть эта двойная настройка CI. Я запускаю модульные тесты в Azure DevOps, который запускает AWS Code Pipeline, который будет развертывать архитектуру через Cloudformation.

Теперь я хочу запускать модульные тесты и сквозные тесты из Pull Request для каждой среды.

Мне нужно выполнить развертывание для выполнения сквозных тестов, но я не уверен, что произойдет, если тесты не пройдут с уже развернутой нерабочей архитектурой.

Репозитории могут быть связаны, и Я хочу иметь возможность запускать несколько CI и откатывать их.

Лучшее решение:

1.

  • Сохранять модульные тесты в VSTS
  • Развертывание конвейера кода триггера
  • Подождите, пока все конвейеры кода будут выполнены и успешно
  • Запуск от конца до конца из VSTS

2.

  • Запуск CodePipeline из VSTS
  • Запуск модульных тестов в CodePipeline
  • Развертывание новой архитектуры
  • Подождите, пока все развертывания будут выполнены и успешно
  • Выполнить e2e te sts из CodePipeline
  • Подождите, пока весь код ie будет готов и успешно, и отправьте ответ в VSTS, чтобы сделать CI в порядке.

Спасибо за вашу помощь.

Ответы [ 2 ]

1 голос
/ 05 мая 2020

Второй вариант кажется лучшим выбором:

  • у вас есть почти все в одном месте - вам не нужно переключаться между CodePipeline и AzureDevops, чтобы увидеть всю картину
  • его также должно быть проще разрабатывать, да, вы можете использовать веб-хуки в AzureDevops для запуска конвейеров, но вы должны иметь возможность добиться лучшего и более простого контроля, оставаясь (в основном) с одним поставщиком

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

1 голос
/ 05 мая 2020

Лично я бы предпочел вариант 2.

CodePipeline - отличный инструмент для оркестровки всего рабочего процесса.

Кроме того, в качестве примечания, когда вы говорите запустить CodePipeline, вам нужно будет для развертывания с использованием S3, скорее всего. Дождавшись его успешного выполнения, вам необходимо будет отслеживать успешное выполнение рабочего процесса API.

...