Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Jenkins 2.0 Status Update (rus)

Jenkins 2.0 Status Update (rus)

В презентации рассказано о проекте по разработке Jenkins 2.0, причинах его разработки и текущем статусе. В отдельности рассмотрена экосистема Pipeline-as-Code, которая уже.доступна для Jenkins 1.609.1+

Oleg Nenashev

February 26, 2016
Tweet

More Decks by Oleg Nenashev

Other Decks in Programming

Transcript

  1. @oleg_nenashev 2.0 26  февраля  2016 •Jenkins OSS,  Core  team •Jenkins

     Developer  в  CloudBees •CloudBees  Jenkins  Platform •Саппорт/Консалтинг •Бэкграунд:   •R&D  в  HW/Embedded  SW,  к.т.н. •Intel,  Sitronics,  Synopsys •Разработка  и  поддержка  large-­‐scale  CI-­‐ инфраструктуры   2 >  whoami @oleg_nenashev oleg-­‐nenashev
  2. @oleg_nenashev 2.0 26  февраля  2016 •Опыт  работы  с  Hudson/Jenkins  

    – 8  лет •Open-­‐source  contribution  – 4  года • Свои  плагины:  Ownership,  Job  Restrictions, … • Легаси:  Role  Strategy,  Custom  Tools,  Promoted  Builds • Команды  Core  &  Security  в  Jenkins • Мейнтейнер Windows  Service  Wrapper  и  Remoting •Организатор  митапа по  Jenkins  в  СПб: • http://www.meetup.com/St-­‐Petersburg-­‐Jenkins-­‐Meetup/ •Куратор  GSoC 2016  (если  примут) 3 >  whoami –v  jenkins –m  oss
  3. @oleg_nenashev 2.0 26  февраля  2016 •Презентация  не  является  тренингом •Презентация

     отражает  личное  мнение   докладчика •Личное  мнение  докладчика  может  не   совпадать  с  позицией  компании 4 Disclaimer
  4. @oleg_nenashev 2.0 26  февраля  2016 Jenkins 101 • 2005  –

    Появление  Hudson  (Sun) • 2008  – Популяризация,  Duke's  Choice  Award • 2011  – Конфликт  с  Oracle,  форк Jenkins • Лицензия:  MIT  (ядро) • https://github.com/jenkinsci/ 6
  5. @oleg_nenashev 2.0 26  февраля  2016 Популярность  Jenkins http://stats.jenkins-­‐ci.org/jenkins-­‐stats/ • ~300

      коммиттеров за  полгода • ~3  новых   плагина  в   неделю • ~30  релизов   плагинов  в   неделю 7
  6. @oleg_nenashev 2.0 26  февраля  2016 8 Who  is  Mr.  Jenkins?

    Jenkins – Система   Непрерывной  Интеграции Фреймворк/Сервер Автоматизации
  7. @oleg_nenashev 2.0 26  февраля  2016 •Смена  фокуса  с  CI в

     разработке  софта •Continuous  Delivery •DevOps •Централизация  систем  автоматизации •Коммерческие  решения 10 Тренды  систем  автоматизации
  8. @oleg_nenashev 2.0 26  февраля  2016 11 Проблемы  UX Где  найти

     документацию? Как  найти/выбрать  плагин? А  этот плагин  вообще  живой? Как  ЭТО  настроить? Почему  мой  фикс  не  смотрят? Почему  UI  неудобен? Как  мне  это  реализовать?
  9. @oleg_nenashev 2.0 26  февраля  2016 13 Масштабируемость  ограничена Нода 1

    Нода 2 Нода N .  .  . • Мастер  решает  большую  часть  задач • Удалённые  задачи  ВСЕГДА нагружают  мастер • Ввод-­‐вывод  на  мастере Multi-­‐ tenancy ??? Gearman CloudBees  Jenkins  Platform
  10. @oleg_nenashev 2.0 26  февраля  2016 15 >5  лет  бинарной  совместимости

    • Плагины  для  Hudson  2  ещё  работают! • НО: • Архитектурные  проблемы • Старые  библиотеки • Устаревший  UI • Интеграционные  проблемы  в  плагинах
  11. @oleg_nenashev 2.0 26  февраля  2016 1  апреля  2010  – Блог

     о  Hudson  2.0 Hudson 2.0 is expected to follow in the intrepid footsteps of other major revamps such as Netscape 5 and Perl 6 in its ambitiousness and innovation. Implementation of core in portable C for greater speed and code readability Revamped storage architecture around the Oracle 11g Database to provide more optimal synergy over flat XML files. https://jenkins-­‐ci.org/blog/2010/04/01/announcing-­‐the-­‐hudson-­‐2-­‐0-­‐roadmap/ Perl  6,  2016 Hudson  2.0,  ?
  12. @oleg_nenashev 2.0 26  февраля  2016 •…не  хотим  сломать  все •…

     хотим  обеспечить  возможность   изменений  в  будущем •…  фокусируемся  на  UX  и  CD 18 В  Jenkins  2.0 мы…
  13. @oleg_nenashev 2.0 26  февраля  2016 19 Исходные  планы,  2015г. Jenkins

     1.x “Jenkins  N.x” Jenkins  2.x Середина  2016 Конец  2016  (?) • Веб-­‐сайт • Фокус  на  UX  и  инфраструктуре • Минимальные нарушения   совместимости • Архитектурные   изменения • Как  минимум  1  LTS-­‐линейка
  14. @oleg_nenashev 2.0 26  февраля  2016 •2015  – Jenkins  Office  Hours

     – обсуждение  планов • https://wiki.jenkins-­‐ci.org/display/JENKINS/Jenkins+2.0 •FOSDEM  2016  – pre-­‐alpha  demo •Jenkins  2.0  Contributor  Summit • 1  февраля  2016,  Брюссель • Митап:   http://www.meetup.com/jenkinsmeetup/events/227463345/ • Записки:   https://docs.google.com/document/d/1yK2J_sv1ceLYYbeLzE W8VZ3HEr8AxZcZr8GhMk6gLUY/edit 20 Ключевые  события
  15. @oleg_nenashev 2.0 26  февраля  2016 • Jenkins  “2.0”  будет  «размазан»

     на  полгода •2.0  – скорее  маркетинг-­‐релиз  с   минимальным  целесообразным  набором   изменений •Лучше,  чем  Git 2.0 21 Новый  план
  16. @oleg_nenashev 2.0 26  февраля  2016 •UX: •“Plugin  gallery” •Новый  мастер

     установки •Улучшение  веб-­‐интерфейсов  (конфиги и  пр.) •Обновление  WebUI-­‐библиотек •SECURITY  by  default •Механизм  устаревания  и  удаления  API 22 Jenkins  2.0. Что  в  ядре? http://bit.ly/jenkins20
  17. @oleg_nenashev 2.0 26  февраля  2016 •https://github.com/jenkinsci/jenkins/tree/2.0 •Вчера  – Релиз  alpha-­‐2

    •Не  все  бренчи  интегрированы,  stay  tuned! 23 Jenkins  2.0.  Доступность
  18. @oleg_nenashev 2.0 26  февраля  2016 •Переезд  на  новый  домен:  http://jenkins.io

    •Статический  web-­‐site,  исходники  на  GitHub ⇒Проще  управлять  контентом  (CD!) ⇒Любой  может  прислать  pull-­‐request •Переработка  контента •Структурирование  информации •БОЛЬШЕ информации •Выход  за  пределы  Continuous  Integration 25 Jenkins  2.0.  Веб-­‐сайт http://bit.ly/jenkins20
  19. @oleg_nenashev 2.0 26  февраля  2016 •Статический  сайт  – DONE •Домен

     и  новая  верстка  – TODO •Локализация  -­‐ TODO •Контент  – Work-­‐in-­‐progress 26 Статус
  20. 27 Редактирование  в   GitHub:  Markdown,   Asciidoc,  HAML Тут

     – всякие   панельки,   которые  мы   скоро   сломаем переработаем
  21. @oleg_nenashev 2.0 26  февраля  2016 •Фокус  -­‐ Out  of  the

     Box  Experience •В  особенности  – конфиги и   управление  плагинами 29 Jenkins  2.0  UI
  22. @oleg_nenashev 2.0 26  февраля  2016 35 Automation  as  Code Job

     DSL DotCI Pipeline  (бывш.  Workflow) Мы  хотим  иметь  его  ближе  к  ядру
  23. @oleg_nenashev 2.0 26  февраля  2016 •Тип  задачи  в  Jenkins (Pipeline

     Job) •Groovy  DSL  для  описания  задач  Jenkins •Open-­‐source  экосистема  для  CD-­‐as-­‐code 36 Что  такое  Pipeline?
  24. 38 Pipeline.  Пример  №2 #!groovy def imageName =  'jenkinsciinfra/ircbot’ node('docker')

     {         checkout  scm //  Using  this  hack  right  now  to  grab  the  abbreviated  SHA1  of    еру  сщььше sh 'git rev-­‐parse  HEAD  >  GIT_COMMIT'         shortCommit =  readFile('GIT_COMMIT').take(6)         def imageTag =  "build${shortCommit}"         stage  'Build  ircbot'         withMavenEnv(["BUILD_NUMBER=${env.BUILD_NUMBER}:${shortCommit}"])  {                 sh 'make  bot'  //  Make  invokes  maven  inside         }         stage  'Build  container'         def whale  =  docker.build("${imageName}:${imageTag}")         stage  'Deploy  container'         whale.push() }
  25. @oleg_nenashev 2.0 26  февраля  2016 •Синтаксис  на  базе  Groovy •Описания

     задач  можно  хранить  в  SCM •Генератор  шаблонов  в  UI •Пользователь  настраивает  шаг  сборки  в  UI •Jenkins  генерит код  для  Pipeline •Параллелизация •Команда  parallel()  – не  нужны  связки  джобов 39 Фичи Pipeline
  26. @oleg_nenashev 2.0 26  февраля  2016 •Устойчивость  к  рестарту  мастера •Pipeline

     хранит  контекст  и  продолжает  задачу   после  рестарта •На  слейвах – Durable  Task Plugin •Много  нод/SCM  в  одной  задаче •Интерактивные  шаги •Безопасность: •Режим  Groovy  Sandbox  (Script  Security  Plugin)   с  white-­‐list 40 Фичи Pipeline
  27. @oleg_nenashev 2.0 26  февраля  2016 •Multi-­‐Branch  Pipeline  Plugin •В  конфигурации

     задачи  – ссылка  на   репозиторий (Git/GitHub,  BitBucket,  …) •Jenkins  берёт  конфиги из  Jenkinsfile •Для  всех  бренчей Jenkins  создает  ОТДЕЛЬНЫЕ   задачи  со  сборками  при  коммитах и  репортингом •[СКОРО] – Сборка  и  репортинг pull-­‐requests •(+)  Тоже  самое  на  уровне  организаций  в   GitHub и  BitBucket 42 Фичи Pipeline. Multi-­‐Branch
  28. @oleg_nenashev 2.0 26  февраля  2016 •load()  – базовая  команда  загрузки

     из  файла •CPS  Global  library • Входит  в  состав  ядра  Pipeline  plugin • Создает  Git-­‐репозиторий в  Jenkins • Определяет  глобальные  функции,  классы  и   переменные •Pipeline  Remote  Loader • https://github.com/jenkinsci/workflow-­‐remote-­‐loader-­‐plugin • Загрузка  кода  Pipeline  из  Git/GitHub • Логика  плагина  написана  на  Pipeline 44 Фичи.  Шаринг кода  между  задачами
  29. @oleg_nenashev 2.0 26  февраля  2016 45 Pipeline  Remote  Loader.  Пример

    stage  'Load  files  from  GitHub' def environment,  helloworld fileLoader.withGit ('https://github.com/jenkinsci/workflow-­‐remote-­‐loader-­‐plugin.git',   'master',  null,  '')   {   helloworld = fileLoader.load('examples/fileLoader/helloworld');   environment  = fileLoader.load('examples/fileLoader/environment');   }   stage  'Run  methods  from  the  loaded  content' helloworld.printHello()   environment.dumpEnvVars()
  30. @oleg_nenashev 2.0 26  февраля  2016 •Multi-­‐branch  pipeline.  Сборка  pull-­‐request’ов •Pipeline

     Stage  view •Подсветка  кода/документация  Pipeline  в  IDE •Графический  редактор  в  UI  Jenkins 46 Скоро…
  31. @oleg_nenashev 2.0 26  февраля  2016 • CloudBees  переводит  проект  в

     OSS • Бета-­‐версия  доступна  в  экспериментальном  апдейт-­‐центре 47 Скоро:  Pipeline   Stage  View • Stage() • Логи для  отдельных   стадий  задачи
  32. @oleg_nenashev 2.0 26  февраля  2016 • Auto-­‐generated  documentation  of  available

     steps. • IDE  auto-­‐completion  too! • Intellij  GDSL  working  now. • Eclipse  DSLD…not  currently  working,  but  waiting  to  be  fixed. • Documentation  currently  available  within  Jenkins   help  links,  will  also  be  made  available  on  Jenkins   website  soon. • Polish  of  the  docs  page  in  the  works  as  well. 48 Скоро
  33. @oleg_nenashev 2.0 26  февраля  2016 •Текущий  сайт:  https://jenkins-­‐ci.org •Прототип  нового

     сайта:  http://jenkins.io •Jenkins  2.0 – планы  и  апдейты • https://wiki.jenkins-­‐ci.org/display/JENKINS/Jenkins+2.0 •Русскоязычные  ресурсы: • https://gitter.im/jenkinsci-­‐ru/public • Twitter  – coming  soon 51 Ссылки
  34. @oleg_nenashev 2.0 26  февраля  2016 Q  &  A Contacts: •

    E-­‐mail:  [email protected] • Gitter:  /oleg-­‐nenashev • Twitter:  @oleg_nenashev