Непрерывная интеграция важна для сольного разработчика?

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

Ответ 3

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

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

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

Ответ 4

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

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

Ответ 5

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

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

Ответ 6

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

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

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

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

Ответ 7

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