Статьи

Непрерывное развертывание пересмотрено

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

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

Контроль версий

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

Я не буду вдаваться в Git, но на SitePoint уже есть около десятка статей, таких как Git Марка Чипполы : Учебник для начинающих и опус Шона Хадгстона « Введение в Git» . О, я почти забыл, что Джесс Женевьева Браун начинает работу с Git . Мне нравится выделять авторов, которые используют свое второе имя. Мне всегда интересно, что случилось бы, если бы Вилла Катер не отказалась от своего второго имени, Иветт, перед публикацией O Pioneers! ,

Естественно, вам также потребуется среда, клон производственной системы, в которой приложение может быть запущено и протестировано. У большинства из нас, вероятно, уже есть надежная тестовая система, но если у вас ее нет, она вам нужна.

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

Обязательство по автоматическому тестированию

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

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

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

Утверждения — это проверки, которые вы фактически встроите в свое программное обеспечение. В отличной документации, которая есть в PHPUnit, говорится о том, как вы можете проверить правильность кода, просто распечатав значения, которые генерирует код, но это очень ручной и примитивный способ тестирования кода. Оттуда вы можете перейти к ситуации, когда вы пишете свой код, чтобы сам код определял, есть ли проблема или нет, и печатал соответствующее сообщение. Это не требует от вас взглянуть на значения и более автоматизировано. Последний шаг заключается в повышении сложности теста и создании сообщения только в случае возникновения проблемы.

Есть также ряд статей о SitePoint, связанных с PHPUnit, начиная с « Начало работы с PHPUnit» Мишель Санвер. Другие включают тестирование состояния ошибки с помощью PHPUnit Мэтта Терланда и введение в модульное тестирование в PHP с помощью PHPUnit и « Будьте настойчивее: знакомство с утверждениями PHPUnit » Криса Корнутта. Существует также ряд статей, касающихся того, как PHPUnit взаимодействует или не взаимодействует с различными платформами и другим программным обеспечением.

Сборка программного обеспечения

И, наконец, вам нужен программный продукт, обычно называемый «программным обеспечением для сборки», который автоматизирует процесс добавления нового кода в существующий код, выполнения тестовых сценариев, уведомления о любых проблемах, а затем, если все идет, хорошо, добавление нового кода в вашу производственную и тестовую среду. Примеры этого включают круиз-контроль, Jenkins, BuildBot, Bamboo и т. Д.

Дженкинс очень популярен среди многих разработчиков, и в SitePoint есть несколько статей, связанных с ним, начиная с серии статей Дж. Армандо Джеронимо « Непрерывная интеграция с Дженкином» . Это также очень хорошая статья на общую тему непрерывных вещей.

Независимо от того, что вы используете, рабочее слово здесь — «автоматический». Нет смысла обновлять ваш сайт каждую ночь, если для перемещения новой версии потребуется пять человек в течение двухдневного периода времени. Скорость важна, но и отсутствие участия человека. Простое — это хорошо, автоматическое — лучше.

Вывод

Непрерывное развертывание / доставка / интеграция не для слабонервных. Это требовательно и имеет много правил и требований, и они должны соблюдаться, или вы можете написать «Бедствие»? Но для команд с несколькими разработчиками, особенно удаленными разработчиками, и бизнесу необходимо обновлять код на очень быстрой и постоянной основе, это может быть единственной игрой в городе.