SlideShare a Scribd company logo
1 of 40
Download to read offline
Continuous Integration & Delivery
To Infinity and Beyond…
How to build powerful CI / CD based on GitLab and Docker
Vladislav Anikin Aleksandr Matkovskiy
Team Leader & Software architect
in OrbitLift a Provectus company
Head of IT Department in Provectus
Say Hello!
Уже не Dev :( Вряд ли OPs :)
OrbitLift Department
Before
• 3 Developers
• 1 QA (manual)
• 1 DevOps (part time)
• 1 Team Lead
Service model
Now
• 6 Developers
• 1 QA (automation)
• 1 DevOps (part time)
• 1 Team Lead
Product model
+ +
Jenkins GitLab WebHooks
+ +
GitLabDocker Aleksandr
Jenkins + GitLab + WebHooks
✓ Price - it’s free :)
✓ Кастомизация и поддержка плагинов
✓ Устоявшееся CI решение на рынке
✓ Выполняет все необходимые задачи
✓ Интегрируется с Docker
- Price of Setup - it’s NOT free
- Ужасный UI / UX
- Where is my car memory, dude!
- Время на конфигурацию / кастомизацию
- Иногда доводит до слез
Pros Cons
How It Works
commit hook build trigger wait…………..
Service Product Model & Git Flow
• Reduce routine costs
• Semantic Versioning 2.0.0
• Unit Test & Automation
• Clean & Simple QA phase
• Ability to Revert
• Ability to Revert of Revert
Requirements
Requirements
• Поддержка веток: master, hotfix, development, feature, rc
• Полная пересборка свежих изменений (commits)
• Подержка Tests & Coverage steps
• Возможность очистки dev dependencies (housekeeping)
• Доступность любого success build с заданным TTL
• Fast, Clean, Secure delivery to destination
• Удобство управления процессами (pipelines)
• Plug & Play features
• Lightweight
CI Concept
CI & CD Concept
Как «Я» понял ТЗ от Dev Team
• Проект на PHP
• Один репозиторий
• Конечное количество веток
• Хранение билдов в абстрактном
хранилище
• Возможность развернуть любой билд
на одной из площадок (QA, Dev, RC)
• Привязка ветки к площадке для
разворачивания
Реали …
• 2 различных репозитория
• 2 разных проекта: Backend -
PHP+nodejs, Frontend - Angular
• Не должно быть ограничений по
количеству веток
• Разное окружение на build и
execute серверах
• Нет жесткой привязки к веткам
Technology
Why GitLab
• With more than
100,000 organizations
self-hosting GitLab
• Docker private registry Source: https://about.gitlab.com/2017/06/29/whats-next-for-gitlab-ci/
executors
GitLab Runner executors:
✓ Shell
✓ Docker
✓ Docker Machine (auto-scaling)
✓ Parallels
✓ VirtualBox
✓ SSH
✓ Kubernetes
Why
• Минимальные накладные расходы
(containers vs virtualization)
• Изолировання среда
• Скажи НЕТ vendor lock
• Сдаться облаку - НЕТ
• Небывалая простота доставки
Why
Because
Implementation of the concept
Логическая схема Build Server
Логическая схема Execute Server
Capabilities CI/CD
✓ Не зависит от проекта/языка.
✓ Передача переменных Project -> CI/CD через Secret variables (GitLab)
✓ Гибкое управление процессом развертывания
✓ Подготовка окружения для сборки и тестирования
✓ Разное окружение на Execute и Build серверах
✓ Сборка по расписанию
GitLab CI Logic Scheme and Pipeline
GitLab CI Logical scheme
Pipeline on Feature branch
Pipeline on Develop branch
Cleanup
• Инструкция «пока» НЕ
хранится в репозитории
проекта
• Dev команда сама решает, как
прибраться
• Индивидуальный набор
инструкция для каждого
проекта
Save build in storage
• Разделение прав - только на запись и только на чтение - AWS IAM
• Уникальное имя архива по шаблону _имяВетки-хешКоммита_
• Шифрование архива (Опция)
• Перенос старых билдов из S3 в Glacier (Опция)
Требования к CI / CD
✓ GitLab v10+
✓ Storage for builds
✓ Compute capacity : 1vCPU, 1GB RAM, 5GB Storage and more
✓ Software requirements: Docker, Docker-compose, GitLab-Runner on servers
We use:
✓ GitLab - 10.4.1
✓ Storage - AWS S3 (+AWS Glacier in future)
✓ Compute capacity: AWS EC2 - t2.micro
✓ Software requirements:
✓ Ubuntu 16.04
✓ Docker version 17.09.0-ce
✓ docker-compose version 1.17.0
Summary
Pipelines history
Summary
Run custom pipeline on-demand
Summary
Full control and stop on error
Summary
Supporting of Tests & Coverage
Summary
Continuous Delivery and Multiple Destinations
Summary
Nightly Builds is our everything
Vision of IP
We can use it anywhere!
etc…
Bugs and Problem
1. Выполнение нескольких
Pipeline одновременно.
Привет ночным сборкам
2. Миграция cleanup
инструкции в
репозиторий проекта
3. Сделать CD для
CI/CD
Achievements
У меня локально работает Продуктивная атмосфера Счастливые QA
Jenkins VS GitLab
Jenkins GitLab CI
Average Build Time
6m 27s 0m 31s
excluding unit tests excluding unit tests
Memory Consumption
~1,3Gb per build ~100Mb
AWS Instance (minimal requirement)
m3.medium t2.micro
Where is my money?
~ 21 build per day
6m 27s 0m 31s
$15.65 per hour
(DOU Dec 2017)
$34,27 per day $2,66 per day
$685,4 per month $53,2 per month
$8464,69 per year $657,02 per year
Where is my money?
AWS
m3.medium t2.micro
$0.077 per hour
$1.84 per day $0.27 per day
$55.44 per month $8.35 per month
$674.52 per year $101.6 per year
$0.0116 per hour
What’s next?
Revert deployments
Browser Performance Tests
SAST (Static App Security Tests)
Zero Downtime Deployments
Почему все получилось?
Vladislav Anikin Aleksandr Matkovskiy
Team Leader & Software architect
in Orbitlift a Provectus company
Head of IT Department in Provectus
Thanks for patience
email: vanikin@provectus.com
skype: just__a__man1
email: amatkovsky@provectus.com
skype: matkovskiy.aleksandr

More Related Content

What's hot

"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo KazymyrovFwdays
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in pythonCOMAQA.BY
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)Anton Katkov
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikPositive Hack Days
 
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...Fwdays
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...IT-Portfolio
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityPositive Hack Days
 
Игорь Леонтьев, 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 groupAlina Vilk
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationOleg Poludnenko
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовOlesya_V
 
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Ontico
 
Петр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRMПетр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRMScrumTrek
 
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps_Fest
 
How I Learned to Stop Worrying and Love the Gradle (Rus)
How I Learned to Stop Worrying and Love the Gradle (Rus)How I Learned to Stop Worrying and Love the Gradle (Rus)
How I Learned to Stop Worrying and Love the Gradle (Rus)Siarhei Krukau
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий МантулаFwdays
 
Distributed Version Control Systems
Distributed Version Control SystemsDistributed Version Control Systems
Distributed Version Control SystemsIgor Sidorov
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальноеОмские ИТ-субботники
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish SQALab
 
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьАлексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьScrumTrek
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOpsDataArt
 

What's hot (20)

"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
"Prom.ua shopping cart workflow as a microfrontend", Danylo Kazymyrov
 
selenium stack in python
selenium stack in pythonselenium stack in python
selenium stack in python
 
AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)AgileCamp’11 Новосибирск - Continuous Integration (CI)
AgileCamp’11 Новосибирск - Continuous Integration (CI)
 
Аналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + QlikАналитика в проектах: TFS + Qlik
Аналитика в проектах: TFS + Qlik
 
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...
Ivan Kolodyazhny "A very short introduction to Kubernetes Operators developme...
 
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
20 апреля, DEV {highload} - конференция о Highload веб-разработке, "Инженерны...
 
Развитие сообщества Open DevOps Community
Развитие сообщества Open DevOps CommunityРазвитие сообщества Open DevOps Community
Развитие сообщества Open DevOps Community
 
Игорь Леонтьев, 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
 
Алексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous IntegrationАлексей Рыстенко: Continuous Integration
Алексей Рыстенко: Continuous Integration
 
Кирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектовКирилл Комлев. О реализации continuous integration для web проектов
Кирилл Комлев. О реализации continuous integration для web проектов
 
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
Мифы о DevOps / Александр Титов, Иван Евтухович (Экспресс 42)
 
Петр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRMПетр Клименко. DevOps Трансформация для SIEBEL CRM
Петр Клименко. DevOps Трансформация для SIEBEL CRM
 
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
DevOps Fest 2020. Сергей Погорелов. Локально распределенное окружение разрабо...
 
How I Learned to Stop Worrying and Love the Gradle (Rus)
How I Learned to Stop Worrying and Love the Gradle (Rus)How I Learned to Stop Worrying and Love the Gradle (Rus)
How I Learned to Stop Worrying and Love the Gradle (Rus)
 
"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула"Посмотрим на Акку-Джаву" Дмитрий Мантула
"Посмотрим на Акку-Джаву" Дмитрий Мантула
 
Distributed Version Control Systems
Distributed Version Control SystemsDistributed Version Control Systems
Distributed Version Control Systems
 
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
2017 04-08 03 Максим Верзаков. Docker — жизнь, вселенная и все остальное
 
Froglogic Squish
Froglogic Squish Froglogic Squish
Froglogic Squish
 
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думатьАлексей Пименов. Kanban — это не то, что вы привыкли о нем думать
Алексей Пименов. Kanban — это не то, что вы привыкли о нем думать
 
Знакомьтесь, DevOps
Знакомьтесь, DevOpsЗнакомьтесь, DevOps
Знакомьтесь, DevOps
 

Similar to "How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovskiy & Vladislav Anikin

Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI” Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI” Provectus
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Ontico
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in productionAnatoly Popov
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаMikhail Chinkov
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Fwdays
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxPlatonov Sergey
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Fwdays
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годAnton Turetsky
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годBadoo Development
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Ontico
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПОDmitry Lazarenko
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»DevGAMM Conference
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыOleg Nenashev
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerPositive Hack Days
 
vi stories: миграция на .NET Core
vi stories: миграция на .NET Corevi stories: миграция на .NET Core
vi stories: миграция на .NET CoreAndrew Gubskiy
 

Similar to "How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovskiy & Vladislav Anikin (20)

Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI” Станислав Иващенко: “Kubernetes как облако для CI”
Станислав Иващенко: “Kubernetes как облако для CI”
 
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
Гетерогенные сервисы для highload-проектов на примере Imhonet.ru и 4talk.im, ...
 
Net core and linux in production
Net core and linux in productionNet core and linux in production
Net core and linux in production
 
Страх и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжинирингаСтрах и ненависть в мире релиз-инжиниринга
Страх и ненависть в мире релиз-инжиниринга
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков" Михаил Боднарчук "Docker для PHP разработчиков"
Михаил Боднарчук "Docker для PHP разработчиков"
 
Wgforge CI/CD
Wgforge CI/CDWgforge CI/CD
Wgforge CI/CD
 
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на LinuxПавел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
Павел Беликов, Опыт мигрирования крупного проекта с Windows-only на Linux
 
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
Dmytro Nemesh "Building the perfect infrastructure with Kubernetes"
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через годDocker в работе: взгляд на использование в Badoo через год
Docker в работе: взгляд на использование в Badoo через год
 
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
Docker в работе: взгляд на его использование в Badoo через год / Турецкий Ант...
 
Jelastic для разработчиков ПО
Jelastic для разработчиков ПОJelastic для разработчиков ПО
Jelastic для разработчиков ПО
 
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
Unity: WebGL и IL2CPP — будущее скриптинга в Unity»
 
Sivko
SivkoSivko
Sivko
 
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемыMoscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
Moscow Jenkins Meetup #1. Pipeline для инженеров. Обзор экосистемы
 
Gitlab devconf
Gitlab devconfGitlab devconf
Gitlab devconf
 
Как мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows DockerКак мы собираем проекты в выделенном окружении в Windows Docker
Как мы собираем проекты в выделенном окружении в Windows Docker
 
vi stories: миграция на .NET Core
vi stories: миграция на .NET Corevi stories: миграция на .NET Core
vi stories: миграция на .NET Core
 
DevOps guide for awesome quality assurance
DevOps guide for awesome quality assuranceDevOps guide for awesome quality assurance
DevOps guide for awesome quality assurance
 

More from Provectus

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP SolutionProvectus
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Provectus
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsProvectus
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionProvectus
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondProvectus
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningProvectus
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerProvectus
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRProvectus
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...Provectus
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...Provectus
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...Provectus
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...Provectus
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...Provectus
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...Provectus
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...Provectus
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019Provectus
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019Provectus
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...Provectus
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019Provectus
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMProvectus
 

More from Provectus (20)

Choosing the right IDP Solution
Choosing the right IDP SolutionChoosing the right IDP Solution
Choosing the right IDP Solution
 
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
Intelligent Document Processing in Healthcare. Choosing the Right Solutions.
 
Choosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare OrganizationsChoosing the Right Document Processing Solution for Healthcare Organizations
Choosing the Right Document Processing Solution for Healthcare Organizations
 
MLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in ProductionMLOps and Data Quality: Deploying Reliable ML Models in Production
MLOps and Data Quality: Deploying Reliable ML Models in Production
 
AI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and BeyondAI Stack on AWS: Amazon SageMaker and Beyond
AI Stack on AWS: Amazon SageMaker and Beyond
 
Feature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine LearningFeature Store as a Data Foundation for Machine Learning
Feature Store as a Data Foundation for Machine Learning
 
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMakerMLOps and Reproducible ML on AWS with Kubeflow and SageMaker
MLOps and Reproducible ML on AWS with Kubeflow and SageMaker
 
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMRCost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
Cost Optimization for Apache Hadoop/Spark Workloads with Amazon EMR
 
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
ODSC webinar "Kubeflow, MLFlow and Beyond — augmenting ML delivery" Stepan Pu...
 
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K..."Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
"Building a Modern Data platform in the Cloud", Alex Casalboni, AWS Dev Day K...
 
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ..."How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
"How to build a global serverless service", Alex Casalboni, AWS Dev Day Kyiv ...
 
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky..."Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
"Automating AWS Infrastructure with PowerShell", Martin Beeby, AWS Dev Day Ky...
 
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2..."Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
"Analyzing your web and application logs", Javier Ramirez, AWS Dev Day Kyiv 2...
 
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma..."Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
"Resiliency and Availability Design Patterns for the Cloud", Sebastien Storma...
 
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ..."Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
"Architecting SaaS solutions on AWS", Oleksandr Mykhalchuk, AWS Dev Day Kyiv ...
 
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
"Developing with .NET Core on AWS", Martin Beeby, AWS Dev Day Kyiv 2019
 
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
"How to build real-time backends", Martin Beeby, AWS Dev Day Kyiv 2019
 
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti..."Integrate your front end apps with serverless backend in the cloud", Sebasti...
"Integrate your front end apps with serverless backend in the cloud", Sebasti...
 
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
"Scaling ML from 0 to millions of users", Julien Simon, AWS Dev Day Kyiv 2019
 
How to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAMHow to implement authorization in your backend with AWS IAM
How to implement authorization in your backend with AWS IAM
 

"How to build powerful CI / CD based on GitLab and Docker", Aleksandr Matkovskiy & Vladislav Anikin

  • 1. Continuous Integration & Delivery To Infinity and Beyond… How to build powerful CI / CD based on GitLab and Docker
  • 2. Vladislav Anikin Aleksandr Matkovskiy Team Leader & Software architect in OrbitLift a Provectus company Head of IT Department in Provectus Say Hello! Уже не Dev :( Вряд ли OPs :)
  • 3. OrbitLift Department Before • 3 Developers • 1 QA (manual) • 1 DevOps (part time) • 1 Team Lead Service model Now • 6 Developers • 1 QA (automation) • 1 DevOps (part time) • 1 Team Lead Product model + + Jenkins GitLab WebHooks + + GitLabDocker Aleksandr
  • 4. Jenkins + GitLab + WebHooks ✓ Price - it’s free :) ✓ Кастомизация и поддержка плагинов ✓ Устоявшееся CI решение на рынке ✓ Выполняет все необходимые задачи ✓ Интегрируется с Docker - Price of Setup - it’s NOT free - Ужасный UI / UX - Where is my car memory, dude! - Время на конфигурацию / кастомизацию - Иногда доводит до слез Pros Cons How It Works commit hook build trigger wait…………..
  • 5. Service Product Model & Git Flow • Reduce routine costs • Semantic Versioning 2.0.0 • Unit Test & Automation • Clean & Simple QA phase • Ability to Revert • Ability to Revert of Revert
  • 7. Requirements • Поддержка веток: master, hotfix, development, feature, rc • Полная пересборка свежих изменений (commits) • Подержка Tests & Coverage steps • Возможность очистки dev dependencies (housekeeping) • Доступность любого success build с заданным TTL • Fast, Clean, Secure delivery to destination • Удобство управления процессами (pipelines) • Plug & Play features • Lightweight
  • 9. CI & CD Concept
  • 10. Как «Я» понял ТЗ от Dev Team • Проект на PHP • Один репозиторий • Конечное количество веток • Хранение билдов в абстрактном хранилище • Возможность развернуть любой билд на одной из площадок (QA, Dev, RC) • Привязка ветки к площадке для разворачивания
  • 11. Реали … • 2 различных репозитория • 2 разных проекта: Backend - PHP+nodejs, Frontend - Angular • Не должно быть ограничений по количеству веток • Разное окружение на build и execute серверах • Нет жесткой привязки к веткам
  • 13. Why GitLab • With more than 100,000 organizations self-hosting GitLab • Docker private registry Source: https://about.gitlab.com/2017/06/29/whats-next-for-gitlab-ci/
  • 14. executors GitLab Runner executors: ✓ Shell ✓ Docker ✓ Docker Machine (auto-scaling) ✓ Parallels ✓ VirtualBox ✓ SSH ✓ Kubernetes
  • 15. Why • Минимальные накладные расходы (containers vs virtualization) • Изолировання среда • Скажи НЕТ vendor lock • Сдаться облаку - НЕТ • Небывалая простота доставки
  • 16. Why
  • 21. Capabilities CI/CD ✓ Не зависит от проекта/языка. ✓ Передача переменных Project -> CI/CD через Secret variables (GitLab) ✓ Гибкое управление процессом развертывания ✓ Подготовка окружения для сборки и тестирования ✓ Разное окружение на Execute и Build серверах ✓ Сборка по расписанию
  • 22. GitLab CI Logic Scheme and Pipeline GitLab CI Logical scheme Pipeline on Feature branch Pipeline on Develop branch
  • 23. Cleanup • Инструкция «пока» НЕ хранится в репозитории проекта • Dev команда сама решает, как прибраться • Индивидуальный набор инструкция для каждого проекта
  • 24. Save build in storage • Разделение прав - только на запись и только на чтение - AWS IAM • Уникальное имя архива по шаблону _имяВетки-хешКоммита_ • Шифрование архива (Опция) • Перенос старых билдов из S3 в Glacier (Опция)
  • 25. Требования к CI / CD ✓ GitLab v10+ ✓ Storage for builds ✓ Compute capacity : 1vCPU, 1GB RAM, 5GB Storage and more ✓ Software requirements: Docker, Docker-compose, GitLab-Runner on servers We use: ✓ GitLab - 10.4.1 ✓ Storage - AWS S3 (+AWS Glacier in future) ✓ Compute capacity: AWS EC2 - t2.micro ✓ Software requirements: ✓ Ubuntu 16.04 ✓ Docker version 17.09.0-ce ✓ docker-compose version 1.17.0
  • 28. Summary Full control and stop on error
  • 30. Summary Continuous Delivery and Multiple Destinations
  • 31. Summary Nightly Builds is our everything
  • 32. Vision of IP We can use it anywhere! etc…
  • 33. Bugs and Problem 1. Выполнение нескольких Pipeline одновременно. Привет ночным сборкам 2. Миграция cleanup инструкции в репозиторий проекта 3. Сделать CD для CI/CD
  • 34. Achievements У меня локально работает Продуктивная атмосфера Счастливые QA
  • 35. Jenkins VS GitLab Jenkins GitLab CI Average Build Time 6m 27s 0m 31s excluding unit tests excluding unit tests Memory Consumption ~1,3Gb per build ~100Mb AWS Instance (minimal requirement) m3.medium t2.micro
  • 36. Where is my money? ~ 21 build per day 6m 27s 0m 31s $15.65 per hour (DOU Dec 2017) $34,27 per day $2,66 per day $685,4 per month $53,2 per month $8464,69 per year $657,02 per year
  • 37. Where is my money? AWS m3.medium t2.micro $0.077 per hour $1.84 per day $0.27 per day $55.44 per month $8.35 per month $674.52 per year $101.6 per year $0.0116 per hour
  • 38. What’s next? Revert deployments Browser Performance Tests SAST (Static App Security Tests) Zero Downtime Deployments
  • 40. Vladislav Anikin Aleksandr Matkovskiy Team Leader & Software architect in Orbitlift a Provectus company Head of IT Department in Provectus Thanks for patience email: vanikin@provectus.com skype: just__a__man1 email: amatkovsky@provectus.com skype: matkovskiy.aleksandr