SlideShare a Scribd company logo
1 of 41
CI/CD
Кузьмицкий Александр
Обо мне
Меня зовут Кузьмицкий Александр.
Окончил МГВРК+БГУИР ИИТ по
специальности Информационные
технологии и управление в
технических системах.
Работаю в Wargaming с 2012 года над
созданием инструментов
автоматизации и доставки ПО.
Continuous integration
• Непрерывная интеграция (CI, англ. Continuous Integration) — это
практика разработки программного обеспечения, которая
заключается в слиянии рабочих копий в общую основную ветвь
разработки и выполнении частых автоматизированных сборок
проекта для скорейшего выявления потенциальных дефектов и
решения интеграционных проблем.
• Результатом CI является артефакт.
Артефакты
Артефакт CI – результат выполнения сборки и прогона тестов,
который однозначно характеризует состояние кода и достаточен
для дальнейшей его доставки.
• Виды артефактов:
• Python package
• .rpm
• .deb
• docker image
• .json, .yaml, .ini, .xml, .txt
• bash/python/perl script
Менеджеры артефактов
• Nexus
• Artifactory
• Nexus
• Jenkins
• Docker registry
• Pypi
• Npm
• RPM/deb repository
Схема работы CI
процесса
• Непрерывный поток изменений в VCS
• Инструментарий CI даёт оперативную
обратную связь о результатах сборки
• Не стабильный код не попадает в
стабильные ветки
Continuous Delivery
• Непрерывная доставка (Continuous Delivery) — это подход к
разработке программного обеспечения, при котором все
изменения, включая новые функции, изменения конфигурации и
исправления ошибок могут быть доставлены в любой момент
времени
Инструментарий Cont. Delivery
• SSH
• Jenkins
• Puppet
• Ansible
• Fabric
• K8S
• Mesos+Marathon
• Bash/python/etc
Continuous Deployment
• Непрерывное развёртывание (Continuous Deployment) — это
подход построению доставки, который позволяет доставлять
проверенные изменения до пользователей сразу же после
прохождения необходимого набора тестов.
Фазы CI/CD
Разработка ПО
Стейджинги
Окружения и порядок доставки кода
Стейджинги
• Стейджинги - площадки, предназначенные для поэтапной
доставки ПО до потребителей
• Требования:
• Конфигурация, аналогичная production
• Layout аналогичен production
• В зависимости от функционального назначения, требования
могут отличаться от стейджинга к стейджингу
Виды стейджингов
• Стейджинги для тестирования функциональности(Trunk)
• Интеграционные стейджинги(Stable)
• Стейджинги для тестирования производительности(Performance)
• Стейджинги для тестирования безопасности(Security)
• Пре-продакшен(Preproduction)
• Продакшен(Production)
DevOps
DevOps инструменты и культура в рамках CI/CD проекта
DevOps
DevOps (акроним от англ. development и operations) — набор
практик, нацеленных на активное взаимодействие специалистов по
разработке со специалистами по информационно-
технологическому обслуживанию и взаимную интеграцию их
рабочих процессов друг в друга. Базируется на идее о тесной
взаимозависимости разработки и эксплуатации программного
обеспечения и нацелен на то, чтобы помогать организациям
быстрее создавать и обновлять программные продукты и услуги.
Цели DevOps
• Сокращение времени доставки релизов
• Снижение частоты отказов новых релизов
• Сокращение времени выполнения исправлений
• Уменьшение количества времени на восстановления
Инструменты DevOps
Workflow
Совместная работа и выпуск изменений
Минималистичный
workflow
• Одиночная разработка
• Каждый следующий
коммит может сломать
код
• Движение только вперёд
Стабильная ветка
• Локальная разработка
• Каждый следующий
коммит может
сломать код только в
development ветке
• Движение
вперёд/назад вперёд
• Стабильные состояния
срезаются в master
Feature branches
• Возможна совместная
работа над разными
фичами
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
Release branches
• Возможна совместная
работа
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
• Релизы выполняются
из ветки release
Hotfix branches
• Development ветка
используется для
интеграции
• Стабильные состояния
срезаются в master
• Релизы выполняются из
ветки release
• Экстренные исправления
мержатся с набором
исключений в
интеграционные/стабиль
ные ветки
CI/CD системы
Сборка, тестирование, доставка
CI/CD системы
• Jenkins
• TeamCity
• Bamboo
• Go
• Gitlab
• TravisCI
Наиболее часто используемые функции
• Проверка на изменения в VCS(pull/push)
• Описание степов с набором команд в каждом
• Визуализация лога
• Указание директории для сборки артефактов
• Доступ к артефактам
• Ручные степы
• Зависимые сборки
• Параметризированные сборки
• Нотификации
• Очередь с приоритетами
• Доступ к переменным окружения
• Нотификации во внешние системы о результатах сборки
Как устроен Jenkins
• Архитектура с сервером и агентами
• Расширение функциональности с помощью плагинов
• OpenSource
• Программирование пайплайнов на Groovy
• BlueOcean – попытка сделать Jenkins красивым
Пайплайны
• Требования:
• Максимальная скорость выполнения
• Воспроизводимость
• Очистка мусора
• Хранение артефактов во внешней системе
Простой пайплайн
• Проверка на изменение в репозитории
• Запуск сборки с новым состоянием кода
• Запуск тестов
• Запуск доставки
• Нотификация
CI+CD пайплайн
• CI
• Push кода в новую ветку репозитория
• Создание Pull Request/Merge Request
• Нотификация в CI систему для запуска сборки из ветки
• Запуск сборки
• Прогон тестов
• Сохранение артефакта
• Нотификация в VCS о результатах теста
• CD
• Выбор артефакта для доставки
• Запуск доставки
• Выполнение тестов на успешную доставку
• Нотификация о результатах
Jenkins
CI
Jenkinsfile
• Jenkinsfile позволяет описать поведение CI системы для
выполнения CI/CD задач
• Виды пайплайнов в Jenkins:
• Декларативный
• Скриптовый
Типы проектов в Jenkins
Freestyle проект
• Один набор шагов на все ветки
• Настраивается через UI
• Подходит для простых задач вроде сборки и публикации
артефактов, доставки, выполнения задач по расписанию
• Один проект на все ветки репозитория
Pipeline проект
• Настраивается с помощью Jenkinsfile прямо в интерфейсе или с
помощью указания пути к файлу в репозитории
• Один проект на все ветки
Multibranch проект
• Настраивается с помощью Jenkinsfile
• Один билд на одну ветку. Обзор веток происходит автоматически
• Самый гибкий из всех видов проектов. Каждая ветка может
собираться по своим правилам.
Multiconfiguration проект
• Позволяет описать матрицу необходимых комбинаций
параметров для выполнения сборки
• Используется в проектах высокой сложности, и тестах
Литература
• https://jenkins.io/user-handbook.pdf
• https://jenkins.io/doc/book/pipeline/
• https://wiki.jenkins.io/display/JENKINS/Building+a+software+project
• https://jenkins.io/doc/book/pipeline/#declarative-versus-scripted-
pipeline-syntax
• http://jenkinshost/env-vars.html/
Спасибо за внимание
Вопросы?

More Related Content

What's hot

Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
CEE-SEC(R)
 
Agile methodologies workshop
Agile methodologies workshopAgile methodologies workshop
Agile methodologies workshop
Alexey Ilyichev
 
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
PingWin Software
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Badoo Development
 

What's hot (20)

AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous Integration
 
Distributed Version Control Systems
Distributed Version Control SystemsDistributed Version Control Systems
Distributed Version Control Systems
 
Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
Особенности внедрения KPI или как доказать, что Ваш «зеленый» проект реально ...
 
Готовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации ТестированияГотовим Docker для Автоматизации Тестирования
Готовим Docker для Автоматизации Тестирования
 
Делаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIsДелаем автоматизацию проектных KPIs
Делаем автоматизацию проектных KPIs
 
Discovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-командыDiscovery Kanban для управления беклогом Scrum-команды
Discovery Kanban для управления беклогом Scrum-команды
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in python
 
Добиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестовДобиваемся эффективности каждого из 9000+ UI-тестов
Добиваемся эффективности каждого из 9000+ UI-тестов
 
Agile methodologies workshop
Agile methodologies workshopAgile methodologies workshop
Agile methodologies workshop
 
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
Реалии внедрения свободного ПО (Вячеслав Калошин, ПингВин Софтвер)
 
Игорь Леонтьев, Lead Architect on all Blockchain projects of Viseo group
Игорь Леонтьев, Lead Architect on all Blockchain projects of Viseo groupИгорь Леонтьев, Lead Architect on all Blockchain projects of Viseo group
Игорь Леонтьев, Lead Architect on all Blockchain projects of Viseo group
 
Dev ops performance lab-v2 (1)
Dev ops performance lab-v2 (1)Dev ops performance lab-v2 (1)
Dev ops performance lab-v2 (1)
 
Agile и тестирование
Agile и тестированиеAgile и тестирование
Agile и тестирование
 
Continous Integration
Continous IntegrationContinous Integration
Continous Integration
 
Асхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в AgileАсхат Уразбаев, Руководство по организации тестирования в Agile
Асхат Уразбаев, Руководство по организации тестирования в Agile
 
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
Доклад Владислава Чернова на конференции LoveQA. "Continuous delivery в крупн...
 
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
Доклад Ильи Кудинова на DevConf 2013. "Организация автоматизированного тестир...
 
Agile Engineering Assessment: оценка технического состояния проекта
Agile Engineering Assessment: оценка технического состояния проектаAgile Engineering Assessment: оценка технического состояния проекта
Agile Engineering Assessment: оценка технического состояния проекта
 
Гліб Криштов:“Автоматизація бізнес процесів”
Гліб Криштов:“Автоматизація бізнес процесів”Гліб Криштов:“Автоматизація бізнес процесів”
Гліб Криштов:“Автоматизація бізнес процесів”
 

Similar to Wgforge CI/CD

SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
Technopark
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
Gleb Rybalko
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
drupalconf
 

Similar to Wgforge CI/CD (20)

SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
SECON'2017, Кулагин Егор, Непрерывное развертывание. Конвейер здорового челов...
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 
Типовая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive TechnologiesТиповая сборка и деплой продуктов в Positive Technologies
Типовая сборка и деплой продуктов в Positive Technologies
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Приемы Сontinuous Integration при разработке приложений на Caché
Приемы Сontinuous Integration при разработке приложений на CachéПриемы Сontinuous Integration при разработке приложений на Caché
Приемы Сontinuous Integration при разработке приложений на Caché
 
Caché github continuous intergration
Caché github continuous intergrationCaché github continuous intergration
Caché github continuous intergration
 
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
QA Fest 2016. Антон Серпутько. Автоматизация запуска тестов с помощью Jenkins...
 
Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5Тестирование весна 2013 лекция 5
Тестирование весна 2013 лекция 5
 
Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)Cеминар в Виннице (22.03.2014)
Cеминар в Виннице (22.03.2014)
 
Микросервисный фронтенд
Микросервисный фронтендМикросервисный фронтенд
Микросервисный фронтенд
 
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
Микросервисный фронтенд / Вячеслав Слинько (ЦИАН)
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Лучшие практики на практике
Лучшие практики на практикеЛучшие практики на практике
Лучшие практики на практике
 
Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)Непрерывная интеграция при разработке баз данных. (Show version)
Непрерывная интеграция при разработке баз данных. (Show version)
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
 
Automation from the trenches
Automation from the trenchesAutomation from the trenches
Automation from the trenches
 
непрерывная интеграция шаг к непрерывному деплою родионов игорь
непрерывная интеграция   шаг к непрерывному деплою родионов игорьнепрерывная интеграция   шаг к непрерывному деплою родионов игорь
непрерывная интеграция шаг к непрерывному деплою родионов игорь
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 
SCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max KolodezniySCRUMopen Developer Max Kolodezniy
SCRUMopen Developer Max Kolodezniy
 

Recently uploaded

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 

Recently uploaded (9)

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 

Wgforge CI/CD

  • 2. Обо мне Меня зовут Кузьмицкий Александр. Окончил МГВРК+БГУИР ИИТ по специальности Информационные технологии и управление в технических системах. Работаю в Wargaming с 2012 года над созданием инструментов автоматизации и доставки ПО.
  • 3. Continuous integration • Непрерывная интеграция (CI, англ. Continuous Integration) — это практика разработки программного обеспечения, которая заключается в слиянии рабочих копий в общую основную ветвь разработки и выполнении частых автоматизированных сборок проекта для скорейшего выявления потенциальных дефектов и решения интеграционных проблем. • Результатом CI является артефакт.
  • 4. Артефакты Артефакт CI – результат выполнения сборки и прогона тестов, который однозначно характеризует состояние кода и достаточен для дальнейшей его доставки. • Виды артефактов: • Python package • .rpm • .deb • docker image • .json, .yaml, .ini, .xml, .txt • bash/python/perl script
  • 5. Менеджеры артефактов • Nexus • Artifactory • Nexus • Jenkins • Docker registry • Pypi • Npm • RPM/deb repository
  • 6. Схема работы CI процесса • Непрерывный поток изменений в VCS • Инструментарий CI даёт оперативную обратную связь о результатах сборки • Не стабильный код не попадает в стабильные ветки
  • 7. Continuous Delivery • Непрерывная доставка (Continuous Delivery) — это подход к разработке программного обеспечения, при котором все изменения, включая новые функции, изменения конфигурации и исправления ошибок могут быть доставлены в любой момент времени
  • 8.
  • 9. Инструментарий Cont. Delivery • SSH • Jenkins • Puppet • Ansible • Fabric • K8S • Mesos+Marathon • Bash/python/etc
  • 10. Continuous Deployment • Непрерывное развёртывание (Continuous Deployment) — это подход построению доставки, который позволяет доставлять проверенные изменения до пользователей сразу же после прохождения необходимого набора тестов.
  • 13. Стейджинги • Стейджинги - площадки, предназначенные для поэтапной доставки ПО до потребителей • Требования: • Конфигурация, аналогичная production • Layout аналогичен production • В зависимости от функционального назначения, требования могут отличаться от стейджинга к стейджингу
  • 14. Виды стейджингов • Стейджинги для тестирования функциональности(Trunk) • Интеграционные стейджинги(Stable) • Стейджинги для тестирования производительности(Performance) • Стейджинги для тестирования безопасности(Security) • Пре-продакшен(Preproduction) • Продакшен(Production)
  • 15. DevOps DevOps инструменты и культура в рамках CI/CD проекта
  • 16. DevOps DevOps (акроним от англ. development и operations) — набор практик, нацеленных на активное взаимодействие специалистов по разработке со специалистами по информационно- технологическому обслуживанию и взаимную интеграцию их рабочих процессов друг в друга. Базируется на идее о тесной взаимозависимости разработки и эксплуатации программного обеспечения и нацелен на то, чтобы помогать организациям быстрее создавать и обновлять программные продукты и услуги.
  • 17. Цели DevOps • Сокращение времени доставки релизов • Снижение частоты отказов новых релизов • Сокращение времени выполнения исправлений • Уменьшение количества времени на восстановления
  • 19. Workflow Совместная работа и выпуск изменений
  • 20.
  • 21. Минималистичный workflow • Одиночная разработка • Каждый следующий коммит может сломать код • Движение только вперёд
  • 22. Стабильная ветка • Локальная разработка • Каждый следующий коммит может сломать код только в development ветке • Движение вперёд/назад вперёд • Стабильные состояния срезаются в master
  • 23. Feature branches • Возможна совместная работа над разными фичами • Development ветка используется для интеграции • Стабильные состояния срезаются в master
  • 24. Release branches • Возможна совместная работа • Development ветка используется для интеграции • Стабильные состояния срезаются в master • Релизы выполняются из ветки release
  • 25. Hotfix branches • Development ветка используется для интеграции • Стабильные состояния срезаются в master • Релизы выполняются из ветки release • Экстренные исправления мержатся с набором исключений в интеграционные/стабиль ные ветки
  • 27. CI/CD системы • Jenkins • TeamCity • Bamboo • Go • Gitlab • TravisCI
  • 28. Наиболее часто используемые функции • Проверка на изменения в VCS(pull/push) • Описание степов с набором команд в каждом • Визуализация лога • Указание директории для сборки артефактов • Доступ к артефактам • Ручные степы • Зависимые сборки • Параметризированные сборки • Нотификации • Очередь с приоритетами • Доступ к переменным окружения • Нотификации во внешние системы о результатах сборки
  • 29. Как устроен Jenkins • Архитектура с сервером и агентами • Расширение функциональности с помощью плагинов • OpenSource • Программирование пайплайнов на Groovy • BlueOcean – попытка сделать Jenkins красивым
  • 30. Пайплайны • Требования: • Максимальная скорость выполнения • Воспроизводимость • Очистка мусора • Хранение артефактов во внешней системе
  • 31. Простой пайплайн • Проверка на изменение в репозитории • Запуск сборки с новым состоянием кода • Запуск тестов • Запуск доставки • Нотификация
  • 32. CI+CD пайплайн • CI • Push кода в новую ветку репозитория • Создание Pull Request/Merge Request • Нотификация в CI систему для запуска сборки из ветки • Запуск сборки • Прогон тестов • Сохранение артефакта • Нотификация в VCS о результатах теста • CD • Выбор артефакта для доставки • Запуск доставки • Выполнение тестов на успешную доставку • Нотификация о результатах
  • 34. Jenkinsfile • Jenkinsfile позволяет описать поведение CI системы для выполнения CI/CD задач • Виды пайплайнов в Jenkins: • Декларативный • Скриптовый
  • 36. Freestyle проект • Один набор шагов на все ветки • Настраивается через UI • Подходит для простых задач вроде сборки и публикации артефактов, доставки, выполнения задач по расписанию • Один проект на все ветки репозитория
  • 37. Pipeline проект • Настраивается с помощью Jenkinsfile прямо в интерфейсе или с помощью указания пути к файлу в репозитории • Один проект на все ветки
  • 38. Multibranch проект • Настраивается с помощью Jenkinsfile • Один билд на одну ветку. Обзор веток происходит автоматически • Самый гибкий из всех видов проектов. Каждая ветка может собираться по своим правилам.
  • 39. Multiconfiguration проект • Позволяет описать матрицу необходимых комбинаций параметров для выполнения сборки • Используется в проектах высокой сложности, и тестах
  • 40. Литература • https://jenkins.io/user-handbook.pdf • https://jenkins.io/doc/book/pipeline/ • https://wiki.jenkins.io/display/JENKINS/Building+a+software+project • https://jenkins.io/doc/book/pipeline/#declarative-versus-scripted- pipeline-syntax • http://jenkinshost/env-vars.html/

Editor's Notes

  1. Доставка без участия DevOps Как выпускает код? Кто его релизит? CI/CD – экономит время, описывает чёткие правила и контроллирует их без участия человека
  2. Основой данной практики является постоянное попадание кода в центральный репозиторий после успешного запуска тестов. Основные цели continuous integration – поиск и устранение потенциальных проблем как можно быстрее, улучшение качества ПО и сокращение время для выпуска обновлений.
  3. Рассказать, что происходит и показать Merge Request
  4. Доставка без участия оперирования
  5. Правильный CI/CD процесс
  6. Куда развёртывать код?
  7. Рассказать о становлении девопсов. Девопсами называют всё, что угодно.
  8. Методики DevOps делают простые процессы более программируемыми и динамическими. С помощью DevOps можно максимизировать предсказуемость, эффективность, безопасность и ремонтопригодность операционных процессов.
  9. Разобрать каждый блок
  10. Вот так может выглядеть диаграмма работы с ветками и использования CI инструментов
  11. Где делать CI?
  12. Когда используется? Где делать CI?
  13. Когда используется? Какие плюсы и минусы? Где делать CI?
  14. Где делать CI?
  15. Рассказать о мезос агентах
  16. csrf
  17. CD отделён от CI. Здесь необходим весь инструментарий.
  18. docker kill $(docker ps -q -a) docker rm -v $(docker ps -q -a) git pull –r docker-compose up
  19. В других системах есть похожие сущности
  20. Рассказать про папки и GitGub