Какая инфраструктура должна быть для запуска тестов на CI

Добрый день! Посоветуйте best practices для запуска тестов на CI. Хорошо ли это запускать тесты на той же машине(CI server) что и CI tool установлен? К примеру, у нас сейчас есть AWS с windows server. На этой машине установлен bamboo. Тест выполняются тоже на этой машине. Но на этом bamboo сидим только автоматизация, девелопмент не юзает его. Какая долдна быть правильная инфраструктура для CI ? Спасибо.

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

То есть вы хотите сказать, что то что у нас бегают тетсы на той же машине, что и CI tool установлен, это правильный подход?

Я придерживаюсь такого мнения - главное что уже что-то работает и оно приносит пользу.
Ну у нас несколько по-другому, у нас CI всё-таки для сборки проекта, и деплоя его куда надо, и на нём же мы запускаем тесты. Всё зависит от задачи.

2 лайка

В вашем подходе есть смысл если будут проблемы с машиной то упадут и тесты и сервер. Если же тестов много то есть смысл разбивать на неоктрое колличество машин. Если на 1 тесты упадут то на других будут бежать дальше. А вообще лучше настроить всякие лоад балансеры, контейнеры и т.д.

Посмотрите на проблему с другой стороны - ответе себе на вопрос, а чем это плохо?
По моему мнению, единственный минус - это, то что при попытке распареллелить тесты, вы столкнетесь с ограничениями в производительности процессора и оперативной памяти. Сделайте замеры запустив тесты в 1, 3, 5 потоков и вы увидите на что способна ваша машина и когда все-таки прийдется выносить тетсы на отдельные виртуалки. Если тесты выполняются последовательно или количество потоков не планируется увеличивать, то вполне подойдет одна виртуалка

Если абстрагироваться, и предположим, что этот CI tool юзают еще и девелоперы. При этом машина довольно мощная, и производительность ее всех устраивает, даже при паралельном запуске. Тогда тоже не имеет смысла гонять тетсы на другой машине, не на той что CI крутиться?

Это плохая практика.
Если у вас умрёт эта машина, вы похерите вообще всё.
И чем больше на ней нагрузка - тем больше шансов, что она будет выходить из строя по различным причинам.

К тому же, параллельные тесты нехило жрут ресурсы, и они будут намного медленнее и нестабильнее бегать, если эти ресурсы будут сжирать ещё другие проекты.

Я уж молчу про уменьшение time2market если всё билдится на одной машине…