Slide 1

Slide 1 text

St.  Petersburg   Jenkins  Meetup @jenkins_spb О Jenkins 2  и планах на будущее IT  Global  Meetup  #8 Санкт-­‐Петербург,  23 июля  2016 Олег  Ненашев  (@oleg_nenashev) CloudBees,  Inc.

Slide 2

Slide 2 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Автоматизация  с  Jenkins • CI,  CD,  DevOps,  … •Администрирование  Jenkins •Разработка  плагинов St.  Petersburg  Jenkins  Meetup Страничка  митапа: http://www.meetup.com/St-­‐ Petersburg-­‐Jenkins-­‐Meetup/ Чат  в  Gitter: http://gitter.im/jenkinsci-­‐ru Twitter: @jenkins_spb 2

Slide 3

Slide 3 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Опыт  Hudson/Jenkins  – 8  лет • Автоматизация  в  Hardware/Embedded • Состою  в Jenkins  core  team • Поддерживаю  плагины:  Role  Strategy,   Ownership,  Job  Restrictions, Custom  Tools… •Jenkins  Developer  в  CloudBees • CloudBees  – контрибьютор Jenkins • CloudBees  Jenkins  Platform • Саппорт/Консалтинг •Организатор  митапа в  СПб >  whoami –v  jenkins @oleg_nenashev oleg-­‐nenashev 3

Slide 4

Slide 4 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Презентация  отражает  личное  мнение   докладчика •Личное  мнение  докладчика  может не   совпадать  с  позицией  сообщества  Jenkins   или  компании  CloudBees •Презентация  не  является  тренингом Disclaimer 4

Slide 5

Slide 5 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Jenkins  2  – что  это? •Апгрейд  до  Jenkins  2.7.x  LTS •Что  такое  LTS? •Подводные  камни •А  что  дальше? О  чем  доклад? 5

Slide 6

Slide 6 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Кто  такой  Jenkins? • Сервер  автоматизации • Continuous  Integration • Continuous  Delivery • DevOps • … • Веб-­‐интерфейс • Распределенная  система • Open-­‐source  (MIT) https://jenkins.io Сборка Тестиро-­‐ вание Создание   пакетов Установка,   развер-­‐ тывание Построе-­‐ ние отчетов,   аналитика и  другое 6

Slide 7

Slide 7 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Ликбез.  Кто  такой  Jenkins? • 2005:  Появился  как  Hudson • 2008:  Duke's  Choice  Award • 2011: Переименование  в  Jenkins • 2012: Самый  популярный  сервер   непрерывной  интеграции • 2015:  >100к  активныхинсталляций • 2015:  1200  плагинов 7

Slide 8

Slide 8 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Jenkins 1.х. Что  было  не  так? •Смена  фокуса  в  разработке  софта •Continuous  Delivery/Deployment •DevOps •Everything  as  Code •Проблемы  UX  в  Jenkins •Сложность  настройки  системы  и  задач •Неполная  документация •Интеграционные  проблемы 8

Slide 9

Slide 9 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Jenkins  2 • Jenkins  2.0  =>  20  апреля 2016 • Jenkins  2.7.1  =>  6  июля  2016 https://jenkins.io/2.0/ 9

Slide 10

Slide 10 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Новый  вебсайт (jenkins.io) •Изменение  базового  набора  плагинов   •Security-­‐опции  включены  по-­‐умолчанию •Улучшения  UI: •Новый  мастер  установки/апгрейда •Улучшение  страниц  конфигурации  задач •Категоризация  задач •Folders  и  Pipeline по-­‐умолчанию Jenkins  2. Что  внутри? http://bit.ly/jenkins20 10

Slide 11

Slide 11 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Изменение  набора  плагинов • Категоризация   элементов • Контекстная   справка «Стандартные»  типы задач: • CVS/SVN -­‐ замена   на Git/GitHub • Folders  плагин • Pipeline  плагин 11

Slide 12

Slide 12 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Jenkins  защищен  с  момента  запуска 12

Slide 13

Slide 13 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Мастер  установки  Jenkins  2.0  [1/2] 13

Slide 14

Slide 14 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Мастер  установки  Jenkins  2.0  [2/2] При  выборе  пункта  – popup-­‐окно со   списком  зависимостей 14

Slide 15

Slide 15 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Страницы  настроек.  Вкладки Вкладки Старый   режим 15

Slide 16

Slide 16 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Groovy  DSL  для  описания  задач  Jenkins •Тип  задачи  в  Jenkins (Pipeline  Job) •Open-­‐source  экосистема  для  something-­‐ as-­‐code  в  Jenkins Jenkins Pipeline 16

Slide 17

Slide 17 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Pipeline.  Запуск  скрипта  из  SCM • Синтаксис  на  базе  Groovy • Описания  задач  можно  хранить  в  SCM • Jenkinsfile – описание  задачи  в  корне  репозитория • Десятки  плагинов и  интеграций: • Stage  View,  Multi-­‐Branch,  …   http://bit.ly/pipeline-­‐tutorial 17

Slide 18

Slide 18 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Параллелизация •Команда  parallel()  – не  нужны  связки  джобов •Множественные  node()  в  одной  задаче •=>  +  parallel()  – запуск  тестов  на  разных  машинах   тестов  на  машинах •Интерактивные  шаги •Устойчивость  к  рестартам  мастера  и   проблемам  с  сетью  на  слейвах Основные  фичи Pipeline 18

Slide 19

Slide 19 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Сегодня:   •Доклад  Александра  Тарасова  в  12:30 •Островок  SPb Jenkins  Community • Мои  предыдущие  доклады: •Митапы по  Jenkins  в  СПб •QA:Conference:  “Jenkins  2  для  автоматизаторов”:   http://bit.ly/jenkins2-­‐qaconf Подробнее  о  Pipeline 19

Slide 20

Slide 20 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Ликбез.  Версии  Jenkins 20

Slide 21

Slide 21 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •LTS… •Протестирован  пользователями •Протестирован  компаниями  – релиз-­‐кандидаты •Включает  Security-­‐фиксы •Исправлено  багов •2.0   .....  2.7.1: ~45  (без  регрессий  в  2.1+) •2.7.1  …  2.7.2: ~10 Jenkins  2.0  vs.  2.7.х LTS 21

Slide 22

Slide 22 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Преимущества •Подводные  камни Обновляемся  на  2.7.х  LTS 22

Slide 23

Slide 23 text

#itgm8,  #jenkins_spb 2 23  июля  2016 “После  апдейта Jenkins  будет   «просто  работать»”  * Официальная  позиция * https://jenkins.io/blog/2016/07/07/jenkins-­‐2/ 23

Slide 24

Slide 24 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Сохранена  бинарная  совместимость •Все  плагины  должны  работать  как  раньше •Исправлены  минорные  проблемы  в   совместимости  UI плагинов Just  works… 24

Slide 25

Slide 25 text

#itgm8,  #jenkins_spb 2 23  июля  2016 “Апдейт в  основном  безопасен,  но…” Личное  мнение  докладчика 25

Slide 26

Slide 26 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Сам  Jenkins: •Фикс  SECURITY-­‐170 •Новые  плагины  в  мастере  установки •Изменение  UI Интеграции: •Security  по-­‐умолчанию при  старте  Jenkins   Риски апгрейда 26

Slide 27

Slide 27 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Задачи  Jenkins  принимаютпараметры,  не   определённые  в  свойствах  задачи •Можно  повлиять  на  окружение  (передать   PATH,  JAVA_HOME  и  т.д.) •Пользователь  с  правами  на  запуск  задачи   может  вызвать  эксплойт •Фикс  интегрирован  в  Jenkins  2.3 и  1.651.3 •https://wiki.jenkins-­‐ci.org/display/SECURITY/   Jenkins+Security+Advisory+2016-­‐05-­‐11 Риски  апгрейда.  SECURITY-­‐170 27

Slide 28

Slide 28 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Затронуто  плагинов  – более  17 •(!) Не  все  плагины  обновлены •Есть  workaround •Информация: • https://wiki.jenkins-­‐ci.org/display/JENKINS/   Plugins+affected+by+fix+for+SECURITY-­‐170 Риски  апгрейда.  SECURITY-­‐170 28

Slide 29

Slide 29 text

#itgm8,  #jenkins_spb 2 23  июля  2016 SECURITY-­‐170.  Затронутые  плагины 29

Slide 30

Slide 30 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Мастер  апгрейда  предлагает  Pipeline •Job  vs.  AbstractProject •“Особенности”реализации  – не  все  старые   плагины  правильно  приводят  типы •=>  риск  ClassCastException •Большинство open-­‐source плагинов   исправлено Риски.  Новые  плагины 30

Slide 31

Slide 31 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Изменен  layout и  некоторые  CSS-­‐классы •Кастомные Javascript’ы  и  CSS  могут   развалиться •Примеры:   •Simple  Theme  Plugin •Плагины,  которые  используют  JavaScript  в   конфигурациях 31 Риски.  Изменение  UI

Slide 32

Slide 32 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •SECURITY  – это  хорошо,  но  многие  тулы к  этому   не  были  готовы… •Известные  проблемы… •chef-­‐cookbooks/jenkins(Issue  #466) •puppet-­‐jenkins (https://Issue  #575  ) •python-­‐jenkins •… •Исправлены •ansible-­‐jenkins(не  все  реализации) •Jenkinsci/docker (для  стандартного  образа) Security  по-­‐умолчанию &  DevOps 32

Slide 33

Slide 33 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Обновляться  на  Jenkins  2  надо •Jenkins  1.x  в  комьюнитибольше  не  развивается •Новых  релизов  не  планируется •Срочности  нет,  большинство  фич доступно   в  Jenkins  1.x  (Pipeline  и  т.п.) •ВСЕГДА тестируйте  обновления  Jenkins! Рекомендации  по  апдейту 33

Slide 34

Slide 34 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Jenkins  UI/UX •Улучшение  UI  в  ядре •BlueOcean– попытка  сделать  новый  UI •Масштабирование  и  надёжность  Jenkins •Pluggable  Storage  -­‐ подключениебаза  данных •Переработка  механизма  коммуникаций  с   нодами Jenkins  2.x.  Планы 34

Slide 35

Slide 35 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •Работа  над  качеством  плагинов •Автоматизация,  автоматизация,   автоматизация •Расширение  Acceptance  Test  Harness  и  Plugin   Compatibility  фреймворков 35 Jenkins  2.x.  Планы

Slide 36

Slide 36 text

#itgm8,  #jenkins_spb 2 23  июля  2016 •https://jenkins.io/projects/blueocean/ •Новый  UI  с  фокусом  на  Continuous  Delivery •Реализация  UI  на  ES6/React •Глубокая  интеграция  с  Pipeline BlueOcean 36

Slide 37

Slide 37 text

No content

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Архитектурные  изменение  Jenkins •Детальные  планы  после  конференции   Jenkins  World  (сентябрь) •Основные  кандидаты: •Механизм  устаревания  API •Pluggable  Storage  -­‐ подключениебаза  данных •Переработка  remoting  – переезд  коммуникаций   на  стандартную  open-­‐source  шину •Stay  tuned! 39

Slide 40

Slide 40 text

#itgm8,  #jenkins_spb 2 23  июля  2016 Вопросы? Контакты: • E-­‐mail:  [email protected] • Gitter:  /oleg-­‐nenashev • Twitter:  @oleg_nenashev Offline:  http://gitter.im/jenkinsci-­‐ru