Как подойти к CI

Я создаю компанию с нуля (Tomcat + Spring Rest + Java), поэтому у нас есть роскошь делать некоторые вещи правильно (или, по крайней мере, не повторять наши прошлые ошибки), что является одной из целей, которые мы хотим для достижения - это возможность автоматически создавать, тестировать (юнит, интеграцию) и развертывать.

Наша платформа построена с одним статическим сайтом интерфейса HTML / JS, обслуживаемым NGiNX, и несколькими серверами API (разными приложениями), некоторые из них открыты, а некоторые доступны только изнутри фермы с помощью открытых приложений API.

Я выбрал TeamCity в качестве CI-сервера, так как я в некоторой степени знаком с ним, и до сих пор у меня был отличный опыт работы со всеми продуктами Jetbrain.

до сих пор я определил две конфигурации сборки

  1. Разумность разработки: извлекается из git, запускает сценарии БД для подготовки базы данных, выполняет цели maven по чистой установке (так что выполняется наш набор testng), выполняет покрытие кода и статический анализ кода Эта конфигурация выполняется и отлично работает.

  2. Интеграция: извлекается из git, запускает сценарии БД для подготовки базы данных, выполняет цели maven по чистой установке (так что выполняется наш пакет testng).

Теперь я дошел до проблемной части, для нашей конфигурации требуется несколько файлов .war файлы, которые должны быть развернуты на разных машинах до начала нашего тестирования интеграции, также я хотел бы построить это таким образом, чтобы я мог добавить третью конфигурацию, которая будет развернута в реальном времени после прохождения интеграции, поэтому в основном это происходит То же, что и вторая конфигурация, но с добавлением некоторых функций, таких как отключение приложения и его возврат в оперативный режим после изящного развертывания, я видел несколько подходов к тому, как это сделать из maven Cargo, сценариев оболочки, ткани и т. д.

есть ли рекомендуемый способ подойти к этому рисунку из вашего прошлого опыта? также я не понимаю, как лучше всего запустить интеграционное тестирование, которое включает в себя развертывание нескольких приложений, я видел много примеров встроенных причалов и т. д.но это хорошо только для одного приложения или очень простой конфигурации, когда вам нужно развернуть 3-4 приложения, прежде чем вы сможете начать тестирование, как лучше всего это сделать? добавить еще один проект, посвященный интеграционному тестированию, и выполнить еще одну цель maven с определенным профилем после завершения развертывания?

Кстати - Развертывание на AWS

Спасибо, ребята.

6
задан Amnon 5 December 2011 в 14:23
поделиться