Если вы читаете Интернет, вы скоро поймете, что большое количество разработчиков программного обеспечения не понимает, что такое CI и почему это важно.
Важно сказать, что Непрерывная интеграция не является сервером Анкет
Как и слово DevOps, люди, кажется, думают, что эти важные принципы разработки программного обеспечения касаются инструментов и продуктов. Возможно, дезинформированные менеджеры подумают, что если они купят правильную волшебную коробку, они, наконец, могут выполнить свои проекты вовремя.
Непрерывная интеграция — это непрерывная интеграция
Прочитайте слова Анкет
Речь идет о том, чтобы, когда вы работаете над кодом, является самой современной версией кода в команде.
В идеальном мире, если бы вы могли каким -то образом работать на одном компьютере одновременно с комфортом, это было бы чистым CI.
Если вы когда-либо использовали плагин VS-Code Live Share, это такой же чистый опыт CI, который вы можете получить в удаленной среде. Если вы не использовали его, это позволяет вам подключаться к коду VS коллеги и редактировать код вместе, как если бы вы работали на одном компьютере. Изменения, которые вы вносят, отражаются (или интегрированные ) всем остальным на сеансе — обратная связь немедленная.
Гораздо более простой опыт CI — это моббинг. Все работают с одной и той же версией кода вместе.
Как узнать, если вы плохо практикуете CI?
Одним из очевидных признаков является разработчики, тратя много времени, разрешающего большие конфликты слияния. Конфликты слияния являются прямым результатом, когда вы работаете над версией кода, которая не обновлена. Ваша команда не интегрирует свои изменения непрерывно и поэтому, поскольку они вносят изменения, риск внесения недействительных изменений увеличивается.
Время, потраченное на конфликты слияния, имеет составление эффектов, поскольку оно увеличивает задержки интеграции ваших собственных изменений в систему.
Можно утверждать, что вы можете разрешить это, структурируя работу по-разному, чтобы избежать конфликтов, даже заходя в повторное архитективность вашего система Чтобы избежать конфликтов слияния. Часто рекламируемая причина для получения микросервисов — это позволяет командам работать самостоятельно.
Читатель, я работал в команде с 20 странными разработчиками, часто отправляя в монолит и очень редко имели конфликты слияния. Мы также не выполняли запросы на привлечение, мы взяли на себя обязательство Master.
Если вы не практикуете CI, вы не работаете со своей командой, как вы могли бы
Изменения в системе невидимо хранятся на компьютерах вашего коллеги, где они вам бесполезны.
Вы можете представить себе большую абстракцию, учитывая код перед вами, но, к сожалению, код перед вами не Источник истины, потому что неизвестный вам, другой разработчик объединяет гигантские изменения после того, как проведет неделю на функцию.
Люди неохотно рефакторируют части кода, потому что кто -то работает над филиалом, которая смутно находится рядом с кодом, который вы хотите изменить, поэтому вы ждаете несколько дней, а затем забудьте об этом.
Как ты хорошо?
Самый простой способ — это часто принять участие в освоении. Это действительно так очевидно!
Чтобы быть хорошим в непрерывной интеграции, вы должны постоянно интегрировать свои изменения в Master. Таким образом, каждый будет работать с одной и той же версией кода по большей части.
Важно, чтобы вы уважали своих коллег и запускали свои тесты, прежде чем нажимать. Если сборка сломана, команда должна Стоп совершение, если только это не решает проблему. Если люди будут продолжать совершать, пока сборка сломана, станет очень трудно диагностировать, в чем проблема, и новые коммиты могут усугубить проблему.
Процесс полностью
git pull -r- Внести позитивные изменения в систему
GIT Commit -AM "Добавленная блокчейна Terraform Machine -обучение модуль 2.0"git pull -r./build.sh && git push
Эта практика проста, не требует сложных систем рассмотрения, отраслевых стратегий и т. Д., А также поднимает хорошие привычки.
- Чтобы часто нажимать, вам нужно часто тянуть изменения
- Вы можете часто толкать, только если работаете над небольшими задачами, итеративно. Есть много, много причин, почему это замечательный, менее рискованный и более простой способ работы. (См. TDD, XP, любая приличная гибкая книга и т. Д.)
Это не будет полностью Остановите конфликты слияния, но они должны быть очень редкими, и потому что вы вносите небольшие изменения, они, как правило, тривиальные для решения.
Но как насчет обзора кода?
Похоже, что отрасль объединила просмотр кода с очень специфическим, относительно новым процессом рассмотрения кода при подаче запроса на привлечение; Обычно слишком поздно, когда весь код написан.
Знаете ли вы, что вы можете поговорить о коде, в любое время в течение дня?
Знаете ли вы также, что правильные абстракции и шаблоны могут быть не очевидны, когда код «сделан», и вам было бы лучше поощрять среду, в которой люди могут свободно рефактор, когда они хотят, а не проходить через трудоемкий процесс каждый раз, когда они хотят изменить код. Я работал и наблюдал за проектами, которые практикуют обзор кода очень строго, и все же код все еще не очень хорош.
Полагаться на процесс проверки кода до его объединения, не приведет к самой здоровой кодовой базе.
С таким способом работы я настоятельно поощряю парные программирование, потому что люди справедливо утверждают, что как одинокий разработчик, очень легко сделать что -то не так, если вы не собираете отзывы. Пара программирования облегчает постоянный цикл обратной связи о том, что вы пишете.
Что, если кто -то сделает что -то не так/сломано?
Прежде всего, ни один процесс в мире не может предотвратить это. Вещи действительно идут не так, и вам лучше спросить себя:
Как мы можем облегчить обнаружение и восстановление от проблем?
Во -вторых, этот подход требует здоровой и совместной команды, которая регулярно разговаривает друг с другом о том, над чем они работают. Они должны разговаривать друг с другом, когда начнут немного работать над тем, что они собираются делать, как они будут его безопасно освобождать, какие тесты и т. Д. Соедините, что с итеративно работая над небольшими вещами, риск продвижения чего -то катастрофического очень низкого.
Если кто -то действительно выдвигает какой -то код, который, возможно, работает (поэтому тесты проходят, мониторинг — это все хорошее и т. Д.), Но на самом деле «плохо». Ну и что? Мы можем рефакторировать это, если нам это не нравится.
Что если я, технический лидер, хочу проверить каждое изменение перед слиянием
Я не хочу работать с привратниками.
Я хочу поработать над командой, которая доверяет еще одной.
Идеально — враг хорошего.
Так плохая ли система запросов на притяжение?
Вовсе нет, они идеально подходят для проектов с открытым исходным кодом, где вы хотите приветствовать взносы других людей, но не имеют скрытого доверия. В этом случае вы захотите просмотреть изменения, которые входят в ваш драгоценный проект.
Для команды, в которой вы доверяете разработчикам, все это добавляет, это накладные расходы.
Освобождение
Мы должны быть Удаление Барьеры для изменения программного обеспечения, а не добавление стен и стен бюрократии.
В такой среде люди исправляют код, когда видят, что он нуждается в исправлении.
Этот способ работы ужесточает петли обратной связи и увеличивает фактическую значимую ловкость.
CI — это не только код
- Важно интегрировать знание домена, работы и т. Д. (Так важно не иметь силосов работы только с BAS/UXD и т. Д.)
- Кто работает над чем (Standups, Kickofts и т. Д.)
Играть в это
Я очень сильно чувствую работу по работе с подходом запроса на притяжение, когда вы работаете над командой, которой вы доверяете.
Большая часть моей команды до недавнего времени была очень незнакомы с этим способом работы, поэтому я сделал глупую панель мониторинга на одном из телевизоров, которые показали, кто взял на себя обязательство овладеть большинством за определенную неделю. Он наказывает вам точки, если вы продвигаете изменение, которое разбивает сборку.
Через несколько недель это небольшое подталкивание улучшило подход команды к CI, у нас было значительно меньше конфликтов слияния, люди чаще рефактируют, и количество неудачных сборков также упало.
Код для этого на GitHub
И если у вас есть Docker, вы можете запустить его с
$ Docker Run -p 8000: 8000 quii/ci -league
Если вы хотите, чтобы он посмотрел на частное репо, вам нужно поставить GitHub Personal Access Token как переменная среды
$ docker run -p 8000: 8000 -e quii/ci -league
Он не делает какого-либо причудливого автоматического перерыва, но у большинства браузеров есть расширения для автоматического обновления вкладки, мы устанавливаем ее для обновления каждые 10 минут здесь.
Завершая
Как обычно в программном обеспечении, мы, кажется, страдаем как отрасль запоминания Почему из всех этих причудливых терминов.
Если вы цените почему CI, вы не можете попасть в ловушку ослепления, применяя передовые практики, которые работают в другом контексте с тем, в которой вы работаете. Как я уже сказал, затягивания в проекте с открытым исходным кодом имеют полный смысл и отлично работают. В другом контексте он добавляет накладные расходы.
Вместо этого вы должны сосредоточиться на том, в чем работает ваша команда, с ограничениями, которые у вас есть, и использовать такие принципы, как CI, чтобы направлять, какой процесс лучше всего подходит.
Оригинал: «https://dev.to/quii/gamifying-continuous-integration-o1d»