Upload
oleg-nenashev
View
145
Download
3
Embed Size (px)
Citation preview
2© 2016 CloudBees, Inc. All Rights Reserved.
Закончил СПбПУ, к.т.н.CloudBees, Jenkins Developer•CloudBees – один из основных контрибьюторов Jenkins
•Занимаюсь Open-Source•Занимаюсь CloudBees Jenkins Platform
Jenkins Project, Core Team•Работаю с Hudson/Jenkins ~8 лет•Автоматизация в Hardware/Embedded•Занимаюсь ядром Jenkins•Поддерживаю (?) плагины
> whoami
@oleg_nenashevoleg-nenashev
О чём доклад?
üО JenkinsüО релизе Jenkins 2üО дальнейших планах
4
Disclaimer:• Даннаяпрезентацияотражаетличноемнениедокладчика• Личноемнениедокладчикаможетнесовпадатьс
официальнойпозициейCloudBeesилисообществаJenkins
5© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins – этоСистема
Непрерывной Интеграции
Сервер/фрэймворкАвтоматизации
6© 2016 CloudBees, Inc. All Rights Reserved.
Система
Инфра-структура
Доку-мен-тация
Инфра-структура
Плагины Конфиги
Инфра-структура
Шаб-лоны
Система на базе Jenkins Гибок и
расширяем
Минимален «из коробки»
Требует настройки
7© 2016 CloudBees, Inc. All Rights Reserved.7
>1000 плагинов
Интеграция с сотнями инструментов
Управление процессамиавтоматизации
Автоматизация любых задач
Code & Commit Build & Config Scan & Test Release Deploy
8© 2016 CloudBees, Inc. All Rights Reserved.
Кто такой Jenkins?Сборка
Тестиро-вание
Создание пакетов
Развер-тывание
Отчёты, анали-тика
и другое
• Сервер автоматизации• Continuous Integration• Continuous Delivery• DevOps• …
• Веб-интерфейс• Распределенная система• >1000 плагинов• Open-source (MIT)
https://jenkins.io
9© 2016 CloudBees, Inc. All Rights Reserved.
Популярность Jenkins
http://stats.jenkins-ci.org/jenkins-stats/
• 140,000 инсталляций• 6 миллионов задач• ~300 коммиттеров за
полгода• ~2 новых плагина в
неделю• ~50 релизов плагинов
в неделю
10© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins Universe
* Исх. Автор: Kuiper oort (dumb version).jpg: NASADump version updated by Manco Capac in order to have a better full image. No Credit required for this current version.derivative work: Skab (talk), Chesnok (talk) - Kuiper oort (dumb version).jpg, Общественное достояние, https://commons.wikimedia.org/w/index.php?curid=8812483
Core Team Разработчики плагинов
Профес-сиональныеадмины
Пользователи
~25 ~300
~тысячи
~миллионы
• Число пользователей растет быстрее числа разработчиков
• Размер Core Team почти не изменился с 2011г.
• Не хватает ментейнеровплагинов
11© 2016 CloudBees, Inc. All Rights Reserved.
Kohsuke:“Jenkinsproject– этобазар”• Самоорганизация• Большоечислоучастников• Разныеинтересыипроекты
Сообщество Jenkins
12© 2016 CloudBees, Inc. All Rights Reserved.
Сообщество разработчиковJenkinsb
oard
CoreTeam
Security
Release/LTS
Events
INFRA Website
"Команды"плагинов
IRC на FreeNode• #jenkins, #jenkins-meeting, #jenkins-community
Jenkins JIRA• Ядро и плагины• Компонент “_unsorted” – Если непонятно
Рассылки• …@googlegroups.com• jenkinsci-dev, jenkinsci-cert• jenkinsci-users
15© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 1.х. Что было не так?
CI уже не моден•… must-have
Смена фокуса в ПО•Continuous Delivery•Continuous Deployment•DevOps•Everything as Code
Рой Buzzword’ов
16© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 1.х. Что было не так?Изменение экосистемы•Публичные и приватные облака•Docker, Docker, Docker, Docker, …•Централизация систем автоматизации•Требования к надежности
Конкурирующие сервисы•Travis, Appveyor, GoCD, GitLab CI, …•Configuration as Code•Cloud-Native•Проще для маленьких команд
17© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 1.х. Что было не так?
L
Устаревшийвеб-интерфейс
Сложность настройки системы и задач
Неполная документация
Интеграционные проблемы
Было: Проект от хакеров для хакеров (open-source)
Стало: не все хотят/могут копаться в коде
19© 2016 CloudBees, Inc. All Rights Reserved.
Масштабируемость ограничена
Агент 1
Агент 2
Агент N. . .
• Мастер решает большую часть задач• Удалённые задачи ВСЕГДА нагружают мастер• Ввод-вывод на мастере
Горизонтальное масштабирование
??? GearmanCloudBees Jenkins Platform
20© 2016 CloudBees, Inc. All Rights Reserved.
Апгрейды…
Ø Обновление ядраØ Обновление плагина и рестарт
“Just works”?
22© 2016 CloudBees, Inc. All Rights Reserved.
Нестабильность ядра?
“Правильные термины”:• Latest and Greatest => Weekly release• LTS => Стабильный Релиз• ??? => Long-Term Support (LTS)▸ Не в Jenkins open-source (ресурсы)▸ Вендоры: CloudBees Jenkins Platform
Jenkins 1.х. Что было не так?
23© 2016 CloudBees, Inc. All Rights Reserved.
Ветки LTS (Long-Term Support) выбираются каждые 12 недель и поддерживаются в течение трёх месяцев (бэкпортинг фиксов, больше тестирования)
Еженедельные релизы с новыми исправлениями и улучшениями. Только автоматическое тестирование, стабильность не гарантирована.
24© 2016 CloudBees, Inc. All Rights Reserved.
>5 лет бинарной совместимости
• Плагины для Hudson 2 ещё работают!
• Для пользователей:• Архитектурные проблемы• Устаревший UI• Интеграционные проблемы в плагинах
• Для разработчиков Jenkins: • Высокая стоимость поддержки• Порог входа
Jenkins 2
• Планирование – FOSDEM 2016• Релиз 2.0 - в апреле 2016• Long-Term Support (LTS) – июль 2016• ~50% инсталляций обновились на Jenkins 2
26© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 2. Как это было?
Ожидание
Реальность
Почти сферическийВ вакууме
КонсервативныйНо всё-таки новый
27© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 2. Как это было?
Ожидание Реальность“Cделать хорошо”“Убрать все, что мешает”Мега-релиз
Много контрибьюторов
Релиз 2.0 в короткий срок (несколько месяцев)
Минимальные измененияСохранение совместимостиИтеративность
~10 человек + CloudBees
А ведь сделали J
28© 2016 CloudBees, Inc. All Rights Reserved.
Новый вебсайт (jenkins.io)Security-опции по-умолчаниюУлучшения UI:•Новый мастер установки/апгрейда•Улучшение страниц конфигурации
Изменение набора плагиновJenkins Pipeline •Configuration as Code для задач
Jenkins 2. Что внутри?
http://bit.ly/jenkins20
30© 2016 CloudBees, Inc. All Rights Reserved.
Security по-умолчанию & DevOpsМногие тулы не были готовы…
Известные проблемы…• chef-cookbooks/jenkins (Issue #466)• puppet-jenkins (https://Issue #575 )• python-jenkins• …
Исправлены• ansible-jenkins (не все реализации)• Jenkinsci/docker (для стандартного образа)
32© 2016 CloudBees, Inc. All Rights Reserved.
Мастер установки Jenkins 2 [2/2]
При выборе пункта – popup-окно со списком зависимостей
34© 2016 CloudBees, Inc. All Rights Reserved.
Pipeline - этоØGroovy DSL для описания задач•Альтернативы – Job DSL, Jenkins Job BuilderØТип задачи в Jenkins (Pipeline, Multi-branch Pipeline)•Описание задач можно хранить в SCM - Jenkinsfile•Автоматическое сознание задач для веток и pull-request’овØЭкосистема для Automation-as-Code•>20 Pipeline-плагинов (“ядро?”)•Множество фич (UI, Стабильность)•Интеграции // Run on a node having the “my_fpga” label
node("linux && ml509") { git url:"http://github.com/myorg/myproject.git"sh "make all"
} http://bit.ly/pipeline-tutorial
35© 2016 CloudBees, Inc. All Rights Reserved.
Основные фичи Pipeline
Groovy – все плюсы ООП•Обработка ошибок•Библиотеки (с @Grab из груви)
Нет привязки к отдельной машине•Команда parallel() – не нужны связки джобов•Множественные node() в одной задаче
Интерактивные шагиУстойчивость к рестартам мастера и проблемам с сетьюUI: Pipeline Stage View, Blue Ocean
37© 2016 CloudBees, Inc. All Rights Reserved.
Jenkins 2. Дальнейшие Планы
• Развитие экосистемы Pipeline• UI/UX, BlueOcean• Масштабирование/Надёжность• Инфраструктура
38© 2016 CloudBees, Inc. All Rights Reserved.
• Новый JavaScript-фреймворк для создания UI в Jenkins• Jenkins Design Language• Jenkins JS Builder• Node.js, React• Интеграция в механизм плагинов
• Улучшение UI в ядре• Доработка страниц навигации и настройки задач• Оптимизация «тяжелых элементов» - очередь,
история сборок и пр.• BlueOcean – попытка сделать новый UI
UI/UX
39© 2016 CloudBees, Inc. All Rights Reserved.
Blue Ocean
Новый Web UI для JenkinsФокус – Jenkins Pipeline
https://jenkins.io/projects/blueocean/
40© 2016 CloudBees, Inc. All Rights Reserved.
Масштабирование и надежностьCloud-Native Jenkins• В процессе обсуждения…
Pluggable Storage•Использование внешних хранилищ данных•Минимизация использования диска и сети•External Logging – Logstash и Co
Улучшение механизма коммуникации с агентами•Remoting 3 / JNLP4•Диагностика агентов в случае отказов•Возможность обновления Remoting без апдейта ядра
41© 2016 CloudBees, Inc. All Rights Reserved.
Было: “сапожник без сапог”Партнерство с Azure•https://jenkins.io/blog/2016/05/18/announcing-azure-partnership/
Планы:•Релиз-flow без человеческого фактора•Переезд на Azure – больше ресурсов •Переезд с jenkins.ci.cloudbees.com▸OSS-only сетап
Jenkins 2. Инфраструктура
42© 2016 CloudBees, Inc. All Rights Reserved.
Интеграция нового parent POM в плагины•POM больше не привязан к версии ядра => можно обновлять flow без ядра
•Статический анализ – хотя бы FindBugs•PR-builder может патчить Parent POM▸Bleeding Edge – тестирование
Другие фреймворки•Acceptance Test Harness•Plugin Compatibility фреймворков
Jenkins 2. Борьба за качество
43© 2016 CloudBees, Inc. All Rights Reserved.
Основные кандидаты:• Механизм устаревания API• Pluggable Storage - подключение внешних хранилищ▸Логи, Артефакты, конфиги, …
• Горизонтальное масштабирование• Переработка remoting – переезд коммуникаций на стандартную open-source шину
Stay tuned!
Архитектурные изменение Jenkins
44© 2016 CloudBees, Inc. All Rights Reserved.
1. Jenkins продолжает развиваться2. Jenkins 2 – не просто маркетинговый релиз3. Обновляться надо
• Гайды по апгрейду – на сайте• Обновляться надо аккупатно
4. Стоит попробовать:• Jenkins Pipeline / Multi-Branch Pipeline• BlueOcean
Выводы