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

StackOverflow https://stackoverflow.com/questions/130592

  •  02-07-2019
  •  | 
  •  

Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

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

Другие советы

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top