Вы хотите отправить код без ошибок с высокой скоростью? Быстрый и надежный трубопровод CI/CD имеет решающее значение для устойчивого выполнения с течением времени.
Что такое трубопровод CI/CD?
CI/CD Pipeline помогает вам автоматизировать шаги в процессе доставки программного обеспечения, таких как инициирование сборки кода, запуск автоматических тестов и развертывание в постановке или производственной среде. Автоматизированные трубопроводы удаляют ручные ошибки, обеспечивают стандартизированные петли обратной связи и включают быстрые итерации продукта.
Что означают CI и CD?
CI, короткая для непрерывной интеграции, является практикой разработки программного обеспечения, в которой все разработчики объединяют изменения кода в центральном репозитории несколько раз в день. CD означает непрерывную доставку, которая в дополнение к непрерывной интеграции добавляет практику автоматизации всего процесса выпуска программного обеспечения.
Непрерывная интеграция объяснена
Марко Анастасов ・ 3 июля ’19 ・ 5 минут прочитал
С помощью CI каждое изменение в коде запускает автоматическую последовательность сборки и теста для данного проекта, предоставляя обратную связь разработчику, которые внесли изменения. Весь цикл обратной связи CI должен работать менее чем за 10 минут.
Что такое правильная непрерывная интеграция?
Марко Анастасов ・ 4 октября ’18 ・ 3 мин читать
Непрерывная доставка включает в себя инфраструктуру обеспечение и развертывание, которые могут быть ручными и состоять из нескольких этапов. Важно то, что все эти процессы полностью автоматизированы, причем каждый пробег полностью зарегистрирован и видимый для всей команды.
Элементы трубопровода CI/CD
Трубопровод CI/CD может звучать как накладные расходы Но на самом деле это не так. По сути, это выполняемая спецификация шагов, которые необходимо выполнить, чтобы доставить новую версию программного продукта. При отсутствии автоматического трубопровода инженерам все равно необходимо выполнить эти шаги вручную и, следовательно, гораздо менее продуктивно.
Большинство выпусков программного обеспечения проходят пару типичных этапов:
Неудача на каждом этапе обычно запускает уведомление — via по электронной почте, Slack и т. Д. — сообщить ответственным разработчикам о причине. В противном случае уведомления обычно настроены для отправки всей команде после каждого успешного развертывания в производство.
Источник
В большинстве случаев запуск трубопровода запускается хранилищем исходного кода. Изменение кода запускает уведомление на инструмент CI/CD, который запускает соответствующий трубопровод. Другие общие триггеры включают автоматически запланированные или инициированные пользователем рабочие процессы, а также результаты других трубопроводов.
Построить стадию
Мы комбинируем исходный код и его зависимости, чтобы создать запускаемый экземпляр нашего продукта, который мы потенциально можем отправить нашим конечным пользователям. Программы, написанные на таких языках, как Java, C/C ++, или GO, должны быть составлены, тогда как программы Ruby, Python и JavaScript работают без этого шага.
Независимо от языка, облачное программное обеспечение обычно развертывается с Docker, и в этом случае этот этап трубопровода CI/CD создает контейнеры Docker.
Неспособность пройти стадию сборки является индикатором фундаментальной проблемы в конфигурации нашего проекта, и лучше немедленно обратиться к нему.
Испытательный этап
На этом этапе мы запускаем автоматические тесты, чтобы подтвердить правильность нашего кода и поведение нашего продукта. Тестовый этап действует как сеть безопасности, которая не позволяет легко воспроизводимым ошибкам добраться до конечных пользователей.
Ответственность за написание тестов падает на разработчиков и лучше всего выполняется, пока мы пишем новый код в процессе Тестовая или основанная на поведении разработку Анкет
В зависимости от размера и сложности проекта, этот этап может длиться от секунды до часов. Многие крупномасштабные проекты запускают тесты на несколько этапов, начиная с Тесты на дым Это выполняет быстрые проверки здравомыслия в сквозных интеграционных тестах, которые тестируют всю систему с точки зрения пользователя. Большой тестовый набор, как правило, параллелизируется для сокращения времени выполнения.
Отказ на этапе тестового этапа раскрывает проблемы в коде, которые разработчики не предвидели при написании кода. Для этой стадии важно быстро произвести обратную связь для разработчиков, в то время как проблемное пространство все еще свежее в их умах, и они могут поддерживать состояние потока.
Создание потока с TDD и непрерывной доставкой
Марко Анастасов ・ 20 декабря ’18 ・ 5 мин читать
Развертывание этапов
После того, как у нас появится заполненный экземпляр нашего кода, который прошел все предопределенные тесты, мы готовы развернуть его. Обычно существует несколько среде развертывания, например, «бета» или «постановка», которая используется внутренне командой продукта, и среда «производства» для конечных пользователей.
Команды, которые приняли гибкую модель разработки, которая руководствуется тестами и мониторингом в реальном времени, обычно развертывает в ручной работы в сфере работы в ручную среду для дополнительного ручного тестирования и обзора и автоматически развернуть утвержденные изменения от основного филиала в производство.
Примеры трубопроводов CI/CD
Трубопровод может начать очень просто. Вот Пример конвейера для проекта GO который собирает код, проверяет стиль кода и запускает автоматические тесты на двух параллельных заданиях:
Трубопровод реализован с Семфор , облачный сервис CI/CD.
Вот более сложный пример трубопровода, который строит, тестирует и развертывает микросервис в кластер Kubernetes:
А вот как его построить:
CI/CD для микросервисов на Digitalocean Kubernetes
Марко Анастасов ・ 13 марта ’19 ・ 12 минут прочитал
Документация Semaphore предоставляет Больше примеров трубопроводов CI/CD Анкет
Дополнительные преимущества трубопроводов
Наличие трубопровода CI/CD оказывает более положительное влияние, чем просто сделать то, что было сделано немного более эффективным:
- Разработчики могут сосредоточиться на написании кода и мониторинг поведения системы в производстве.
- QA и заинтересованные стороны продукта имеют легкий доступ к последней или любой версии системы.
- Обновления продукта не являются стрессовыми.
- Журналы всех изменений кода, тестирования и развертываний доступны для проверки в любое время.
- Вернувшись к предыдущей версии в случае проблемы, это обычное давление.
- Быстрая петля обратной связи помогает построить организационную культуру обучения и ответственности.
7 способов непрерывной доставки помогают построить культуру обучения
Марко Анастасов ・ 19 сентября ’18 ・ 3 мин читать
Счастливого здания!
Оригинал: «https://dev.to/markoa/ci-cd-pipeline-a-gentle-introduction-2n8k»