Важна ли непрерывная интеграция для индивидуального разработчика? - PullRequest
62 голосов
/ 25 сентября 2008

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

Первое - какие преимущества дает CI для любого проекта?

Второе - кто должен использовать КИ? Это приносит пользу всем разработчикам?

Ответы [ 7 ]

68 голосов
/ 25 сентября 2008

Основная концепция CI заключается в том, что у вас есть система, которая создает код и запускает автоматические тесты каждый раз, когда кто-то делает коммит в систему контроля версий. Эти тесты будут включать в себя модульные и функциональные тесты или даже тесты, основанные на поведении.

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

Если вы являетесь сольным разработчиком, CI не будет вполне столь же полезным, если вы привыкли запускать тесты перед коммитом, а это то, чем вы должны быть делает. При этом у вас может развиться дурная привычка позволять КИ делать за вас ваши тесты.

Как сольный программист, это в основном сводится к дисциплине. Использование CI - полезный навык, но вы должны избегать развития каких-либо вредных привычек, которые бы не влияли на командную среду.

15 голосов
/ 17 июля 2009

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

Однако, если вы никогда ранее не настраивали систему CI, я рекомендую сделать это только ради того, чтобы научиться делать это. Это не займет так много времени, что оно не стоит обучения.

10 голосов
/ 25 сентября 2008

Преимущество CI заключается в возможности раннего обнаружения, когда регистрация прервала сборку. Вы также можете запускать свой набор автоматических тестов для сборки, а также запускать любые инструменты, чтобы получить метрики и тому подобное.

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

Сборка CI также может считаться вашей "релизной" сборкой. Среда должна быть стабильной и не подверженной влиянию каких-либо элементов разработки, которые вы просто добавляете на свою машину. Это должно позволить вам всегда воспроизводить сборку. Это может быть полезно, если вы добавите новую зависимость в свой проект и забудете настроить среду сборки релиза, чтобы учесть это.

6 голосов
/ 23 октября 2008

Если вам нужно поддерживать несколько компиляторов, тогда удобно иметь систему сборки CI, которая делает все это, пока вы просто разрабатываете в одной IDE. Мой код собирается с Vc6 до VS2008 в x86, а x64 - на VS2005 и 8, так что это 7 сборок на проект на конфигурацию проекта ... Наличие системы CI означает, что я могу разрабатывать в одной IDE и позволить системе CI доказать, что все компиляторы, которые я поддерживаю, все еще строят.

Аналогичным образом, если вы создаете библиотеки, которые используются несколькими проектами, CI позаботится о том, чтобы они работали со ВСЕМИ проектами, а не только с тем, с которым вы работаете сейчас ...

6 голосов
/ 21 октября 2008

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

  • Если вы забыли зарегистрировать какой-либо необходимый файл, хранилище содержит поврежденную версию, даже если она работает на вашем компьютере. CI обнаружит этот случай.
  • Если ваш CI-сервер работает на другом компьютере, это может указывать на зависимости от вашей среды сборки. Значит, сборка и все тесты могут работать на вашем dev-box, но на другой машине некоторые зависимости не выполняются и сборка нарушается.
  • Ежедневные сборки могут указывать, что ваше старое программное обеспечение не работает с последним обновлением ОС / компилятора / библиотеки ...
  • Если в вашей CI-системе есть архив артефактов сборки, вы можете легко получить дистрибутив более старой версии вашего программного обеспечения.
  • Некоторые CI имеют приятный интерфейс для отображения метрик о вашей сборке, имеют ссылки на автоматически сгенерированную документацию и тому подобное.
5 голосов
/ 24 октября 2008

Мы используем нашу CI-систему для сборки релизов (а также для обычных автоматических сборок "при фиксации").

Возможность щелкнуть по кнопке, которая запускает сборку Release, которая проходит через все процессы, чтобы выпустить установку:

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

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

2 голосов
/ 25 сентября 2008

CI приносит пользу одиночному разработчику в том смысле, что вы знаете, что забыли что-то проверить (потому что сборка будет повреждена). Однако его интеграционная ценность уменьшается, когда других разработчиков нет.

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