Автор оригинала: Ken Emiewo.
Если вы слышали о CICD и удивились, что это означало или как весь процесс работает, эта статья будет освещать ваше понимание.
Если вы также всегда оказываетесь в этой неловкой ситуации, когда нет рабочего демо, чтобы представить до готового к покупке клиента, или требуется навсегда выпустить обновления для конечных пользователей, дышите легко, что вы не пропустили на вызов непрерывной интеграции. & Непрерывная доставка.
Непрерывная интеграция просто относится к процессу совершения кода изменения в центральном хранилище несколько раз в день.
Непрерывная доставка просто относится к процессу перемещения небольших интегрированных изменений в производственные среды (продукт, используемый клиентами).
Если вы являетесь бизнесом | Менеджер по продукту команды разработки программного обеспечения, вы, вероятно, должны выполнять комнату широкую луновую прогулку, потому что CICD сократит время на рынок для любой функции, которую вы намерены встроить в ваш продукт.
CICD стремится к устранению проблем в жизненном цикле разработки программного обеспечения, включая управление релизами и увеличением скорости доставки обновлений для конечных пользователей.
Что я на самом деле имею в виду? Большинство команд, строитых программным обеспечением без CICD, имеют общие подводные камни, особенно с интеграцией обновлений на живое программное обеспечение. Вещи действительно хитрые, ошибки могут привести к тому, что могут быть трудно отслеживать и разрешать, неожиданное поведение может произойти, оставляя разработчики без ключа, и все это сводится к плохому опыту клиента, они отрицают ваше приложение и продолжают минимальную жизнь.
Непрерывная интеграция и непрерывное развертывание создают удобный способ перемещения кода с компьютера разработчиков на Live Server, который обслуживает приложение, с которыми взаимодействуют конечные пользователи. Теперь позвольте мне сломать его для вас.
Давайте рисуем всю CICD Bhingy как шаблон, который имеет несколько шагов, теперь позволяет покрасить сценарий, чтобы подчеркнуть внутреннюю работу всего процесса.
Например, у нас есть команда разработки программного обеспечения, включающая 4 разработчика, которые намерены построить приложение для продаж автомобилей. Шаг Осталось бы просмотреть документ о бизнесе и создавать пользовательские истории для покрытия всех случаев использования. Далее разработчики могут заключить вывод на языке программирования (ов) в создании всего проекта. Далее, если это приложение PHP, разработчики могут пойти с Laravel или Falcon. До сих пор пользовательские истории были созданы и набор рамок, все выглядит великолепно.
Далее команда создает репозиторий на GitHub и сделать первоначальный коммит со свежей установкой их недавно загруженного приложения Laravel. Легко похоже на ветер, CICD все еще хорошо придет.
Теперь истории выскочились в присвоение задач и инструмент отслеживания, такими как ключевой трекер, асана или Trello. Devs Rush In и забрать истории, кодирование началось.
Слышал о слову TDD до? Если его аббревиатура, которая смущает вас в прошлом, я искренне извиняюсь за толка, это не было преднамеренным. Простые слова. Он включает в себя проверку теста подразделения первым, чтобы подтвердить конкретную вещь, прежде чем написать основной код, чтобы сделать эту особенную вещь. TDD можно легко объяснить, по сравнению с валидацией формы. Когда введен неверный ввод или введен неправильные учетные данные, форма отказывается от отправки, и пользователь никогда не вошел в систему. В разделе «Тестовый разработчик» вы пишете проверки для вашего кода в форме модульных тестов, и если ваша реализация реального кода не удается тесты, разработчики Commit (S) никогда не будут развернуты на серверах.
Почему я вынул время, чтобы объяснить TDD, его, потому что он служит серьезной задней костью в жизненном цикле CICD. Качество ваших тестов и уровень вашего тестового покрытия служит хранителем Gate для интеграции кода, и если ваш тест плохой, багги можно все еще можно интегрировать.
Теперь, когда у нас есть TDD с нашей груди, мы можем продолжить наш поток CICD. Чтобы быть уверенным, позвольте мне повторить, пока каждый из 4 разработчиков может прийти к тому же репозитории, они также соответствуют TDD, поскольку они пишут тесты качества, прежде чем они пишут фактическую реализацию.
Далее нам необходимо интегрировать сервер сборки CI (непрерывной интеграции), который может автоматически выполнять все тесты, которые разработчики написали, поскольку они начали работать над проектом. Приложения управления версиями, такие как Github и Bitbucket, могут интегрироваться с несколькими непрерывными серверами интеграции, такие как Circle CI, TRAVIS CI, Drone или Bitbucket, чтобы упомянуть несколько. Не забудьте, что серверы CI помогают нам запускать тест непосредственно на репозитории и потребуют, чтобы мы поместим специальный файл .yml в корневом каталоге репозитория проекта. Этот файл .yml содержит инструкции о том, как сервер CI будет создавать приложение и проверить код. Конфигурация файла .yml зависит от используемого сервера CI, но обычно они похожими в некоторых способах, просто прочитайте их документацию.
Теперь с помощью лучшей практики TDD и непрерывный интеграционный сервер непосредственно связан с нашим репозиторием, нам нужно было бы сопоставить наши филиалы в различные условия.
Вы слышали о словах, производстве, постановке и средах развития. Если у вас нет, я не хотел присудить тебя снова. Не бойтесь, это просто означает, что такое же приложение о том, что команда здания была развернута в 3 разных местах с разными URL-адресами.
Например:
http://development.carsales.com (среда развития)
http://staging.carsales.com (постановка окружающей среды)
http://carsales.com (производственная среда)
В вашем репозитории GitHub вам придется создать 3 отдельных филиала E.g. Развивайте, постановка, мастер.
Отображение будет выполнено в файле .yml, каждый сервер Ci имеет документацию о том, как настроить файл .yml. Но обычно они обычно дают вам возможность писать инструкции для любого количества филиалов на вашем репозитории.
Пример:
Филиал: ** Развивается:
-запустить тестовое задание
-Пуш код на сервер развития
Филиал: ** Постановка:
-запустить тестовое задание
-Пуш код для постановки сервера
Филиал: ** Мастер:
-запустить тестовое задание
-Пуш код до производства сервера
В большинстве случаев он работает, всякий раз, когда код нажимается на любую из ветвей, указанных в файле .yml, он будет запускать сценарий сборки для этой ветки, и если сборка успешна, это означает, что код соответствует и может быть безопасно интегрирован. После чего код автоматически развернут на сервер, указанный под веткой.
Также обратите внимание, что для этих специальных ветвей — лучшая практика для этих специальных ветвей от прямого нажатия, а также разрешить только слияние. Это обеспечит структурированный подход к тому, как ваш код развернут в любой из сред.
Например:
Разработка ветви будет объединена в постановку, затем постановка будет объединена в мастера. Ни один из разработчиков в любой момент не сможет напрямую подтолкнуть к любому из этих трех специальных ветвей, вместо этого они создают другие ветви и объединяются в развитие. Развитие становится единственным источником истины, которые будут продвигаться к другим филиалам.
Когда качество Quality выполняет тест приема пользователя на обстановке постановки и найдет ее стабильным, они могут дать большой большой палец, а коммиты будут объединены в Master для изменений/новых функций для развертывания для конечных пользователей.
CICD — это спасатель жизни, скорость развертывания — это второе значение, нет, ошибки могут легко отслеживать и разрешаться. Теперь, когда вы знаете, как это работает, Endeavor принять его в вашей практике разработки программного обеспечения. Ваше здоровье
Оригинал: «https://www.codementor.io/@kenemiewo/how-continuous-integration-continuous-delivery-cicd-works-x3xthwwl8»