ITGM8 - О Jenkins 2 и планах на будущее

ITGM8 - О Jenkins 2 и планах на будущее

* Jenkins 2 – что это?
* Апгрейд до Jenkins 2.7.x LTS
* Что такое LTS?
* Подводные камни
* А что дальше?

568e3391c8b528f2b255443e4cca27ca?s=128

Oleg Nenashev

July 23, 2016
Tweet

Transcript

  1. St.  Petersburg   Jenkins  Meetup @jenkins_spb О Jenkins 2  и

    планах на будущее IT  Global  Meetup  #8 Санкт-­‐Петербург,  23 июля  2016 Олег  Ненашев  (@oleg_nenashev) CloudBees,  Inc.
  2. #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
  3. #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
  4. #itgm8,  #jenkins_spb 2 23  июля  2016 •Презентация  отражает  личное  мнение

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

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

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

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

     не  так? •Смена  фокуса  в  разработке  софта •Continuous  Delivery/Deployment •DevOps •Everything  as  Code •Проблемы  UX  в  Jenkins •Сложность  настройки  системы  и  задач •Неполная  документация •Интеграционные  проблемы 8
  9. #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
  10. #itgm8,  #jenkins_spb 2 23  июля  2016 •Новый  вебсайт (jenkins.io) •Изменение

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

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

     запуска 12
  13. #itgm8,  #jenkins_spb 2 23  июля  2016 Мастер  установки  Jenkins  2.0

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

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

    Старый   режим 15
  16. #itgm8,  #jenkins_spb 2 23  июля  2016 •Groovy  DSL  для  описания

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

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

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

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

  21. #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
  22. #itgm8,  #jenkins_spb 2 23  июля  2016 •Преимущества •Подводные  камни Обновляемся

     на  2.7.х  LTS 22
  23. #itgm8,  #jenkins_spb 2 23  июля  2016 “После  апдейта Jenkins  будет

      «просто  работать»”  * Официальная  позиция * https://jenkins.io/blog/2016/07/07/jenkins-­‐2/ 23
  24. #itgm8,  #jenkins_spb 2 23  июля  2016 •Сохранена  бинарная  совместимость •Все

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

     но…” Личное  мнение  докладчика 25
  26. #itgm8,  #jenkins_spb 2 23  июля  2016 Сам  Jenkins: •Фикс  SECURITY-­‐170

    •Новые  плагины  в  мастере  установки •Изменение  UI Интеграции: •Security  по-­‐умолчанию при  старте  Jenkins   Риски апгрейда 26
  27. #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
  28. #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
  29. #itgm8,  #jenkins_spb 2 23  июля  2016 SECURITY-­‐170.  Затронутые  плагины 29

  30. #itgm8,  #jenkins_spb 2 23  июля  2016 •Мастер  апгрейда  предлагает  Pipeline

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

     CSS-­‐классы •Кастомные Javascript’ы  и  CSS  могут   развалиться •Примеры:   •Simple  Theme  Plugin •Плагины,  которые  используют  JavaScript  в   конфигурациях 31 Риски.  Изменение  UI
  32. #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
  33. #itgm8,  #jenkins_spb 2 23  июля  2016 •Обновляться  на  Jenkins  2

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

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

    •Автоматизация,  автоматизация,   автоматизация •Расширение  Acceptance  Test  Harness  и  Plugin   Compatibility  фреймворков 35 Jenkins  2.x.  Планы
  36. #itgm8,  #jenkins_spb 2 23  июля  2016 •https://jenkins.io/projects/blueocean/ •Новый  UI  с

     фокусом  на  Continuous  Delivery •Реализация  UI  на  ES6/React •Глубокая  интеграция  с  Pipeline BlueOcean 36
  37. None
  38. None
  39. #itgm8,  #jenkins_spb 2 23  июля  2016 Архитектурные  изменение  Jenkins •Детальные

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

     o.v.nenashev@gmail.com • Gitter:  /oleg-­‐nenashev • Twitter:  @oleg_nenashev Offline:  http://gitter.im/jenkinsci-­‐ru