Jenkins 2. Как сделать мажорный релиз и не развалить...
Transcript of Jenkins 2. Как сделать мажорный релиз и не развалить...
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
XIIмеждународнаяконференция
CEE-SECR/РАЗРАБОТКАПО
28- 29 октября,Москва
ОлегНенашев
Jenkins 2.Каксделатьмажорныйрелизинеразвалитьсообщество?
CloudBees,Inc.
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� ЗакончилСПбПУ,к.т.н.� CloudBees,JenkinsDeveloper
� CloudBees– одинизосновныхконтрибьюторов Jenkins
� ЗанимаюсьOpen-SourceиCloudBeesJenkinsPlatform
� (+)Поддержка/Консалтинг
� JenkinsProject,CoreTeam� РаботаюсHudson/Jenkins~8лет
� АвтоматизациявHardware/Embedded
� ЗанимаюсьядромJenkins
� Поддерживаюплагины:RoleStrategy,Ownership,Job
Restrictions, CustomTools…
> whoami
@oleg_nenashev
oleg-nenashev
2
О чём доклад?Естьвдокладе:
ü ОсообществеJenkins
ü ОрелизеJenkins2
ü Одальнейшихпланах
3
Disclaimer:• Даннаяпрезентацияотражаетличноемнениедокладчика• Личноемнениедокладчикаможетнесовпадатьс
официальнойпозициейCloudBeesилисообществаJenkins
Нетвдокладе:
X DeepDiveвJenkinsPipeline
X Сложныхпримеров
=>MoscowJenkinsMeetup
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Who is Mr. Jenkins?
4
Jenkins – этоСистема
Непрерывной Интеграции
Сервер/фреймворк
Автоматизации
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Кто такой Jenkins?
5
Сборка
Тестиро-вание
Созданиепакетов
Развер-тывание
Отчёты,анали-тика
идругое
• Сервер автоматизации• Continuous Integration• Continuous Delivery• DevOps• …
• Веб-интерфейс• Распределенная система• >1000 плагинов• Open-source (MIT)
https://jenkins.io
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
ПопулярностьJenkins
http://stats.jenkins-ci.org/jenkins-stats/
• 140,000 инсталляций• 6 миллионов задач• ~300 коммиттеров за
полгода• ~2 новых плагина в
неделю• ~50 релизов плагинов
в неделю
6
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
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.derivativework: Skab (talk), Chesnok (talk) - Kuiper oort (dumb version).jpg, Общественное
достояние, https://commons.wikimedia.org/w/index.php?curid=8812483
Core Team Разработчики плагинов
Профес-сиональныеадмины
Пользователи
~25 ~300
~тысячи
~миллионы
7
• Число пользователей растет быстрее числа разработчиков
• Размер Core Team почти не изменился с 2011г.
• Не хватает ментейнеровплагинов
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Kohsuke:“Jenkinsproject– этобазар”
• Самоорганизация
• Большоечислоучастников
• Разныеинтересыипроекты8
Сообщество Jenkins
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� Сложноприниматьрешения
� => Частичнопомогает JenkinsGovernanceMeeting
� Нетединогопроцесса
� =>Прямыекоммиты вмастер
� =>Мердж бездостаточногоколичестваголосов
� Процесскомьюнити vs.процессгрупп
контрибьюторов (CloudBees,RedHat ит.д.)
НедостаткиBazaar-подхода
9
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
СообществоразработчиковJenkinsboard
CoreTeam
Security
Release/LTS
Events
INFRA Website
"Команды"плагинов
10
IRCнаFreeNode� #jenkins,#jenkins-meeting,
#jenkins-community
JenkinsJIRA� Ядро иплагины
� Компонент“_unsorted”–
Еслинепонятно
Рассылки (@googlegroups.com)
� jenkinsci-dev,jenkinsci-cert
� jenkinsci-users
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Комьюнити. Jenkins-митапы
• >40 митапов• >8000 участников
11 • Online Meetup
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� Twitter:@jenkins_ru
� Gitter:http://gitter.im/jenkinsci-ru
� Q&A,использованиеиразработкаJenkins
� Митапы:
� http://www.meetup.com/St-Petersburg-Jenkins-Meetup/
� http://www.meetup.com/Moscow-Jenkins-Meetup/
� http://www.meetup.com/Belarus-Jenkins-Meetup/
� …
Русскоязычноесообщество
Здесьможетбыть
Вашелого
12
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Jenkins 1.х. Чтобылонетак?� CIуженемоден
� … must-have
� СменафокусавПО
� ContinuousDelivery
� ContinuousDeployment
� DevOps
� Everything asCode
13
Рой Buzzword’ов
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Jenkins 1.х. Чтобылонетак?� Изменениеэкосистемы
� Публичныеиприватныеоблака
� Docker,Docker,Docker,Docker,…
� Централизациясистемавтоматизации
� Требованиякнадежности
� Конкурирующиесервисы
14
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Jenkins 1.х. Чтобылонетак?
L
Устаревший
веб-интерфейс
Сложностьнастройкисистемыизадач
Неполнаядокументация
Интеграционныепроблемы
15
Было: Проект от хакеров для хакеров (open-source)
Стало: не все хотят/могут копаться в коде
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Масштабируемостьограничена
Агент1
Агент2
АгентN. . .
• Мастер решает большую часть задач• Удалённые задачи ВСЕГДА нагружают мастер• Ввод-вывод на мастере
Горизонтальное масштабирование
??? GearmanCloudBees Jenkins Platform
16
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� Сейчас- Малоразработчиковядра
� Многиевендоры используютJenkins ”какесть”
� Недостаток“постоянных”контрибьюторов
� Малоактивныхмейнтейнеров плагинов
� Есть:Сотни� Надо:Тысячи
Проблемыроста
17
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
>5 летбинарнойсовместимости• Плагины для Hudson 2 ещё работают!
• Для пользователей:• Архитектурные проблемы• Устаревший UI• Интеграционные проблемы в плагинах
• Для разработчиков Jenkins: • Высокая стоимость поддержки• Порог входа
18
Jenkins 2• Планирование– FOSDEM2016
• Релиз 2.0- в апреле 2016
• Long-TermSupport(LTS) – июль 2016
• ~50%инсталляций обновились на Jenkins2
19
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Jenkins 2.Какэтобыло?
Ожидание
Реальность
20
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Jenkins 2.Какэтобыло?
Ожидание Реальность
� Изменитьархитектуруи
«сделатькакнадо»
� Сделатьвсезаплани-
рованные врелизе2.0
� Многоконтрибьюторов
� Релиз2.0вкороткийсрок
(несколькомесяцев)
� Минимальныеизменения,
сохранениесовместимости
� 2.0– лишьчастьизменений,
работаемнадоостальным
� ~10человек+CloudBees
� АведьсделалиJ
21
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� Новыйвебсайт (jenkins.io)
� Security-опциипо-умолчанию
� УлучшенияUI:� Новыймастерустановки/апгрейда
� Улучшениестраницконфигурации
� Изменениенабораплагинов
� JenkinsPipeline� ConfigurationasCodeдлязадач
Jenkins 2. Чтовнутри?
http://bit.ly/jenkins20
22
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Pipeline - этоØGroovyDSLдляописаниязадач
� Альтернативы– JobDSL,JenkinsJobBuilder
Ø Типзадачив Jenkins(Pipeline,Multi-branch Pipeline)� ОписаниезадачможнохранитьвSCM- Jenkinsfile
� Автоматическоесознаниезадачдляветокиpull-request’ов
Ø Экосистема дляAutomation-as-Code� >20Pipeline-плагинов(“ядро?”)
� Множествофич (UI,Стабильность)
� Интеграции
23
// 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
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Основныефичи Pipeline� Groovy– всеплюсыООП
� Обработкаошибок� Библиотеки(с@Grabизгруви)
� Нетпривязкикотдельноймашине� Командаparallel()– ненужнысвязкиджобов� Множественныеnode()воднойзадаче
� Интерактивныешаги
� Устойчивостькрестартаммастераипроблемамссетью
� UI:PipelineStageView,BlueOcean
24
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Пример. CD Jenkins-ботаdef imageName = 'jenkinsciinfra/ircbot’node('docker') {checkout scm// Немного магии для получения тэга Docker-образаsh 'git rev-parse HEAD > GIT_COMMIT'commit = readFile('GIT_COMMIT').take(6)def imageTag = "build${commit}"
stage 'Build ircbot'withMavenEnv
(["BUILD_NUMBER=${env.BUILD_NUMBER}:${commit}"]) {sh 'make bot' // Make вызывает Maven
}
stage 'Build container'def whale = docker.build("${imageName}:${imageTag}”)
stage 'Deploy container'whale.push()
}https://github.com/jenkins-infra/ircbot
Слишком сложно?• Snippet Generator• Pipeline Model Definition• Travis YML Converter
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� https://jenkins.io/doc/
� Моипредыдущиедоклады:
� Митапы поJenkinsвСПб
� QA:Conference:
� “Jenkins2дляавтоматизаторов”:
� http://bit.ly/jenkins2-qaconf
� SQADays:
� “Jenkins 2.0:Организуем тестирование в составе CD”
� http://sqadays.com/ru/index?eventId=38947
ПодробнееоPipeline
26
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Итак,ачтосCommunity?� МногиебылинедовольныподходомвJenkins2.0
� Недостаточноизмененийвархитектуре
� Нетжелаемыххотелок
� МаловниманияуделеноContributorExperience
� НО:� Jenkins2.0!=Jenkins2
� МногиеTODOреализуютсявJenkins2.x
� Jenkins3– паралет
27
Jenkins 2. ДальнейшиеПланы• РазвитиеэкосистемыPipeline
• UI/UX,BlueOcean
• Внешнеехранилищеданных
• Инфраструктура
28
UI/UX• НовыйJavaScript-фреймворк длясозданияUIвJenkins
• Node.js,React,интеграциявмеханизмплагинов
• УлучшениеUIвядре• Доработкастраницнавигацииинастройкизадач
• Оптимизация«тяжелыхэлементов»- очередь,историясборокипр.
• BlueOcean – попыткасделатьновыйUI
29
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Blue Ocean� НовыйWebUIдляJenkins
� Фокус– JenkinsPipeline
30
https://jenkins.io/projects/blueocean/
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Масштабированиеинадежность
� PluggableStorage
� Использованиевнешниххранилищданных
� Минимизацияиспользованиядискаисети
� ExternalLogging– Logstash иCo
� Улучшениемеханизмакоммуникациисагентами
� Remoting3/JNLP4
� Диагностикаагентоввслучаеотказов
� ВозможностьобновленияRemotingбезапдейта ядра
31
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� Было:“сапожникбезсапог”
� ПартнерствосAzure
� https://jenkins.io/blog/2016/05/18/announcing-azure-
partnership/
� Планы:
� Релиз-flow безчеловеческогофактора
� ПереезднаAzure– большересурсов
� Переездсjenkins.ci.cloudbees.com наOSS-onlyинфраструктуру
Jenkins 2. Инфраструктура
32
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
� ИнтеграцияновогоparentPOMвплагины
� POMбольшенепривязанкверсииядра=> можнообновлятьflowбезядра
� Статическийанализ– хотябыFindBugs вавтосбрках
� Доработка
� AcceptanceTestHarnessиPluginCompatibility
фреймворков
Jenkins 2. Качество
33
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
АрхитектурныеизменениеJenkins� Основныекандидаты:
� МеханизмустареванияAPI
� PluggableStorage- подключение внешниххранилищ
� Логи,Артефакты,конфиги,…
� Горизонтальноемасштабирование
� Переработкаremoting– переездкоммуникацийна
стандартнуюopen-sourceшину
� Staytuned!
34
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Выводы
1. Jenkinsпродолжаетразвиваться
2. Jenkins2– непростомаркетинговыйрелиз
3. Обновлятьсянадо
� Гайды поапгрейду– насайте
4. Стоитпопробовать:
� JenkinsPipeline/Multi-BranchPipeline
� BlueOcean
35
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Хотитеузнатьбольше?
� JenkinsMoscowMeetup,2ноября,19:00
� http://www.meetup.com/Moscow-Jenkins-
Meetup/events/235107785/
� ОлегНенашев
� Jenkins2.x.ЧтоДальше?
� КириллТолкачев,
� CDwithJenkins:LessonsLearned
� Mr.TBD
36
Офис Deutsche Bank, Беговая 3 стр. 1, 27 этаж
@oleg_nenashev, #jenkinsci, #jenkins_ru, #cee_secr Октябрь 2016
Вопросы?Offline: http://gitter.im/jenkinsci-ru
Контакты:
E-mail: [email protected]
GitHub: oleg-nenashev
Twitter: @oleg_nenashev
Ссылки:
• jenkins.io
• cloudbees.com
• go.cloudbees.com