2008-09-24 2 views
59

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

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

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

ответ

68

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

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

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

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

10

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

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

Конструкция CI также может считаться вашей сборкой «release». Окружающая среда должна быть стабильной и не затронута какой-либо разработкой gizmo, которую вы просто добавляете в свою машину. Это должно позволить вам всегда воспроизводить сборку. Это может быть полезно, если вы добавляете новую зависимость к вашему проекту и не забудьте установить среду сборки выпуска, чтобы учесть это.

+0

Не было бы обнаружено нарушение в модульных тестах (или какой-либо другой схеме испытаний)? – 2008-09-24 23:35:10

+2

Вы будете удивлены, как часто файл не проверяется ... – Benoit 2008-09-24 23:41:31

2

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

6

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

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

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

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

5

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

Будучи в состоянии нажать кнопку, которая пинает сборки выпуска, который ступает через все процессы, чтобы освободить установку является:

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

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

14

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

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

Смежные вопросы