Непрерывная интеграция и средний стек - PullRequest
0 голосов
/ 27 декабря 2018

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

После прочтения я узнал, что могу создать два отдельных репозитория, поддерживая, таким образом, два отдельных приложения: клиентское приложение и внутреннее приложение.Поскольку они являются отдельными репозиториями, я могу иметь отдельные файлы .travis.yml для каждого и выполнять непрерывную интеграцию в клиентском приложении и в бэкэнд-приложении.Однако мне нужен совет по этому подходу, потому что у меня есть вопросы:

  1. Для клиентского приложения я должен написать тесты.Так как я буду использовать angular, я хочу протестировать отзывчивость и работают ли компоненты как задумано.Клиентское приложение также должно обмениваться данными с бэкэнд-приложением, и я хочу посмотреть, правильно ли оно получает правильные результаты (например, нажатие кнопки вызывает запрос GET и посмотреть, получаю ли я правильное тело ответа).Так как клиентское приложение находится в отдельном репозитории, и когда я собираю его на TravisCI, как я могу подключить клиентское приложение к внутреннему приложению, если оно существует в отдельном репозитории?

  2. Iчитать и я могу использовать подмодули в git.Таким образом, клиентское приложение и внутреннее приложение могут быть подмодулями для «главного репозитория».Следовательно, как будет работать триггер в TravisCI?Буду ли я иметь отдельные файлы travis.yml в каждом подмодуле или мне нужно будет иметь их в «главном репозитории»?

  3. Если бы мне нужно было заставить все работать правильно и иметьКак клиентское приложение, так и серверное приложение успешно развернуты, и оба они размещены на разных серверах. Как я решу междоменную проблему?

Другой подход заключается в размещении статических файлов, созданныхng build --prod и хост-приложение узла должно их разместить.Когда запускается Travis CI, я могу сначала создать внутреннее приложение узла и сначала запустить на нем тесты, а затем запустить тесты на угловом клиентском приложении.После того, как все тесты пройдены, где я могу развернуть?Я знаю, что должен развернуть приложение узла, так как на нем будут размещаться статические файлы, поэтому как именно я буду развертывать приложение бэкенда в Travis CI?

Я знаю, что это подтолкнет, но я все равно спрошу.В будущем я хочу научиться внедрять микросервисы и использовать Nginx для балансировки нагрузки.Как я пойду об этом?Docker может помочь мне создать производственную среду, в которой я могу увидеть, хорошо ли работают сервер и приложение Nginx, но как мне включить это в Travis CI?

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

1 Ответ

0 голосов
/ 27 декабря 2018

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

  1. попробуйте потратить немного времени на чтение документации Travis CI, а также на то, как писать тесты и какие типы тестов вам подойдут.Ваша проблема не столько в Трэвисе, сколько в том, что такое юнит-тесты и что такое интеграционные тесты.Так что пишите простые автономные тесты для своего внешнего интерфейса, простые автономные тесты для своего бэкэнда, возможно, какое-то время запускайте интеграционные тесты вручную, и когда это станет реальной проблемой, тогда вы будете лучше знать, как все работает вместе, и вы найдете способ,Короче говоря: не существует единственного лучшего способа запуска интеграционных тестов, и это в основном зависит от многих, многих вещей в вашем приложении (как оно работает, какой тип БД вы используете и т. Д.)

  2. Вы должны прочитать о подмодулях.Возможно, они вам нужны, а может и нет.Там нет никакого способа, чтобы сказать.Вы можете использовать подмодули с Travis CI, но вы также не можете использовать подмодули.Зависит от того, чего вы хотите достичь.Сосредоточьтесь на конечной цели вашей архитектуры, а не на том, что нужно Travis CI!

  3. Какая проблема междоменной области?Опять же, это совсем другая проблема, и, вероятно, не самая выдающаяся, с которой вы столкнетесь.Поскольку я понятия не имею, какую серверную технологию вы будете использовать, я никак не могу ответить на этот вопрос должным образом.Если вы используете экспресс, это может быть то, что вы ищете: https://expressjs.com/en/resources/middleware/cors.html

Общие советы: все ваши вопросы сводятся к опыту.Попробуйте решить одну проблему за раз, начните работу над своим проектом, и когда вы столкнетесь с конкретной проблемой, ее будет гораздо проще решить, чем задавать вопросы о «микросервисах».Есть много способов сделать правильные микросервисы, каждый из которых решает свою проблему.Без каких-либо знаний о том, о чем ваше приложение и какие проблемы вы хотите решить, микросервисы могут или не могут быть тем, что вы ищете, но есть и много других компонентов, которые могут повлиять на ваш стек.Просто начните и пока не думайте обо всем этом слишком много - лучше иметь что-то, что вы сможете проверить и чему научиться, чем неделями думать о том, чего вы никогда не получите, потому что это всего лишь теория.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...