Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[SnowOne 2025] Екатертна Шевчук: Разберемся с С...

[SnowOne 2025] Екатертна Шевчук: Разберемся с СI/CD: что это такое и зачем нужно разработчику

Скорость поставки и качество продукта — главные конкурентные преимущества в разработке ПО. Поэтому важно использовать лучшие практики сообщества для обеспечения этих двух пунктов. Одной из таких практик является CI/CD — Continuous Integration и Continuous Delivery — непрерывная интеграция и непрерывная доставка. Она помогает свести ошибки к минимуму, повысить качество разрабатываемого продукта и увеличить скорость его поставки клиенту. Без непрерывной интеграции сотрудничество разработчиков превращается в утомительный ручной процесс координации обновлений и слияний кода.

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

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

Видео: https://youtu.be/Efb3mvtuG0I

Avatar for jugnsk

jugnsk

May 07, 2025
Tweet

More Decks by jugnsk

Other Decks in Programming

Transcript

  1. О чем поговорим Что такое ci/cd Что такое ci/cd Что

    такое ci/cd Что такое ci/cd Основные этапы пайплайна Инструменты 3
  2. О чем поговорим Что такое ci/cd Что такое ci/cd •

    Определение • Цели • Плюсы и минусы Что такое ci/cd Что такое ci/cd Основные этапы пайплайна Инструменты 3
  3. О чем поговорим Что такое ci/cd Что такое ci/cd Что

    такое ci/cd Что такое ci/cd Основные этапы пайплайна • Статический анализ • Сборка • Unit-тесты • Интеграционные тесты • Деплой на тестовые стенды и в прод Инструменты 3
  4. О чем поговорим Что такое ci/cd Что такое ci/cd Что

    такое ci/cd Что такое ci/cd Основные этапы пайплайна Инструменты • Gitlab Сi, • TeamCity, • Jenkins • и тд 3
  5. Проблемы - трата большого количества человекочасов на поиск проблемы -

    увеличение времени разработки - снижение качества кода 6
  6. CI | Continuous Integration — непрерывная интеграция. Цель – обеспечить

    последовательный, воспроизводимый и автоматизированный способ: - анализа - сборки - тестирования 9
  7. Docker — программное обеспечение для автоматизации развёртывания и управления приложениями

    в средах с поддержкой контейнеризации, контейнеризатор приложений. Контейнер — это среда выполнения со всеми необходимыми компонентами, такими как код, зависимости и библиотеки, которые необходимы для запуска кода приложения без использования зависимостей хост-машины. 13
  8. Kubernates — открытое программное обеспечение для управления контейнеризированных приложений —

    автоматизации их развёртывания, масштабирования и координации в условиях кластера. 14
  9. Helm — позволяет обернуть Kubernetes приложения в удобные пакеты, называемые

    чартами. Чарт – содержит все определения ресурсов, необходимых для запуска приложения внутри k8s. 15
  10. CD | Continuous Delivery — непрерывная поставка. Автоматическое развертывание на

    стенды и тестовые окружения. Настройка специфических параметров окружения. 18
  11. CD | Continuous Deployment — непрерывное развёртывание. При таком подходе

    каждое изменение, которое мы коммитим в основную ветку репозитория, автоматически проходит все этапы CI и CD и затем попадает на продакшн. 19
  12. Source Control Build Staging Build Continuous Delivery Source Control Build

    Staging Build Вручную Автоматически Continuous Deployment 20
  13. CI/CD - набор принципов и практик, которые позволяют разработчикам чаще

    и надежнее развертывать изменения программного обеспечения и поставлять их на стенды. 22
  14. Цели CI/CD: - обеспечение последовательного, воспроизводимого и автоматизированного способа сборки,

    упаковки и тестирования - автоматизация развёртывания в разных окружениях - сведение к минимуму ошибок и проблем 23
  15. Что получаем 24 Плюсы Минимальное время от взятия задачи в

    работу до запуска в использование Возможность проверки вариантов решения Качество результата Минусы Требования к опыту Сложность поддержки и доработки
  16. Что получаем 24 Плюсы Минимальное время от взятия задачи в

    работу до запуска в использование Возможность проверки вариантов решения Качество результата Минусы Требования к опыту Сложность поддержки и доработки
  17. Pipeline - это автоматизированное выражение вашего процесса для проверки программного

    обеспечения и его доставки от системы контроля версий до ваших пользователей и клиентов 26
  18. SonarQube - платформа для проверки кода на качество по правилам,

    основанным на соглашениях и стандартах. https://docs.sonarsource.com/sonarqube-server/latest/ 28
  19. Самые быстрые, стабильные Без подъема окружения Скорость и стабильность хуже

    Нужно окружение Самые медленные и нестабильные E2E Unit Интеграционные, компонентные и тд. 32
  20. Цели CI/CD: - обеспечение последовательного, воспроизводимого и автоматизированного способа сборки,

    упаковки и тестирования - автоматизация развёртывания в разных окружениях - сведение к минимуму ошибок и проблем 33
  21. Цели CI/CD: - обеспечение последовательного, воспроизводимого и автоматизированного способа сборки,

    упаковки и тестирования - автоматизация развёртывания в разных окружениях - сведение к минимуму ошибок и проблем 33
  22. Релиз Все проверки для релиза пройдены Для релизной ветки Сбор

    задач Подготовка к установке релиза 36 Сборка docker-образа Установка helm release
  23. Инструменты CI/CD Задачи: - собирать проект - прогнать юнит тесты

    - прогнать интеграционные/E2E тесты - поднять для этих тестов окружение - доставить версию проекта на тестовые и продакшн окружения 39
  24. Инструменты CI/CD Требования: - установленная Java - установленная система сборки

    - интеграция с VCS системой - интеграция с системой, где поднято окружение - установленные инструменты для поднятия окружения - отчеты о прогонах 40
  25. Инструменты 41 Встроенные в систему управления репозиториями Расширяемые с большим

    количеством интеграций и плагинов, возможность параллельного выполнения задач Облачные обычно есть и облачный и автономный варианты использования
  26. Jenkins Pipeline (или просто «Pipeline») — это набор плагинов, который

    поддерживает реализацию и интеграцию конвейеров CI/CD в Jenkins. 43
  27. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } } 44
  28. Пример Jenkinsfile pipeline { agent any / “test“/ “java 21“

    stages { stage('Build') { steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } } 45
  29. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } } 47
  30. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    steps { // } } stage('Test') { steps { // } } stage('Deploy') { steps { // } } } } 48
  31. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    steps { sh ’’’’’’ // ’’’’’’ } } stage('Test') { … } stage('Deploy') { … } } } 49
  32. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    … } stage('Test') { steps { function(…) } } stage('Deploy') { … } } } 50
  33. Пример Jenkinsfile pipeline { agent any stages { stage('Build') {

    … } stage('Test') { … } stage('Deploy') { steps { sh ’’’’’’ helm install … ’’’’’’ } } } } 51
  34. Зачем нужен ci/cd • Распределение ответственности • Сокращение рисков •

    Оптимизация обратной связи • Создание рабочей среды 53