Slide 1

Slide 1 text

Не хватает расширений? Нужно ли делать своё? И как? Меркушев Кирилл Руководитель группы автоматизации тестирования в Яндексе #jenkins_spb 1

Slide 2

Slide 2 text

Плагин или не плагин? Вопрос без четкого ответа #jenkins_spb 2

Slide 3

Slide 3 text

Пишите расширение Если: Это интеграция с другим сервисом Хотите UI для настройки процесса Нужна публикация результатов в UI #jenkins_spb 3

Slide 4

Slide 4 text

Не пишите расширение Если: Еще не пытались обойтись другими Задача проживет меньше года Используется в одной джобе #jenkins_spb 4

Slide 5

Slide 5 text

Вместо расширения Groovy спешит на помощь! #jenkins_spb GROOVY 5

Slide 6

Slide 6 text

#jenkins_spb Внутреннее API Синтаксис 6 Б=Безопасность

Slide 7

Slide 7 text

Job DSL Groovy Groovy Postbuild #jenkins_spb 7

Slide 8

Slide 8 text

Job DSL Groovy Groovy Postbuild Scriptler #jenkins_spb 8

Slide 9

Slide 9 text

Scriptler Plugin bit.ly/scriptler #jenkins_spb 9

Slide 10

Slide 10 text

Scriptler Plugin bit.ly/scriptler #jenkins_spb Репо с примерами Всё в одной админке Удобный шаг сборки Нет шага после сборки 10

Slide 11

Slide 11 text

Groovy Postbuild Plugin bit.ly/groovy-postbuild #jenkins_spb 11

Slide 12

Slide 12 text

Groovy Postbuild Plugin bit.ly/groovy-postbuild #jenkins_spb Скрипты хранятся «местно» Только шаг после сборки 12

Slide 13

Slide 13 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb 13

Slide 14

Slide 14 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb Причём тут MultiJob? 14

Slide 15

Slide 15 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb 15

Slide 16

Slide 16 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb 16

Slide 17

Slide 17 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb 17

Slide 18

Slide 18 text

Job DSL Plugin bit.ly/job-dsl #jenkins_spb Поддержка в ~10^32 раз легче Генерация под событие Всё под VCS 18

Slide 19

Slide 19 text

Start Guide Откуда начать свой? #jenkins_spb 19

Slide 20

Slide 20 text

jenkins-ci.org Extend Jenkins, Blog blog.qatools.ru Jenkins Plugin #jenkins_spb www.cloudbees.com/blog 20

Slide 21

Slide 21 text

Инструменты Как начать Что это ваще?? Локальная отладка #jenkins_spb 21

Slide 22

Slide 22 text

Maven 3+ JDK 7+ #jenkins_spb 22

Slide 23

Slide 23 text

Hello World Plugin mvn -U org.jenkins-ci.tools:maven-hpi-plugin:create #jenkins_spb 23

Slide 24

Slide 24 text

Структура #jenkins_spb 24

Slide 25

Slide 25 text

HelloWorldBuilder extends Builder implements Describable, ExtensionPoint #jenkins_spb 25

Slide 26

Slide 26 text

Немного теории #jenkins_spb 26

Slide 27

Slide 27 text

Словарь Describable Элемент интерфейса #jenkins_spb 27

Slide 28

Slide 28 text

Describable Все что в UI Builder Шаг сборки #jenkins_spb 28

Slide 29

Slide 29 text

Describable Все что в UI 2 Shell шага сборки (2 Builder, 2 Describable) #jenkins_spb 29

Slide 30

Slide 30 text

Словарь Describable Элемент интерфейса Descriptor Фабрика элементов #jenkins_spb 30

Slide 31

Slide 31 text

public static final class DescriptorImpl extends BuildStepDescriptor Связь Descriptor Describable #jenkins_spb 31

Slide 32

Slide 32 text

Двусторонняя связь Describable Descriptor #jenkins_spb 32

Slide 33

Slide 33 text

Полезности Ajax doCheck[Field] doFill[Field]Items doAutocomplete[Field] #jenkins_spb 33

Slide 34

Slide 34 text

Словарь Describable Элемент интерфейса Descriptor Фабрика элементов ExtensionPoint Точка расширения #jenkins_spb 34

Slide 35

Slide 35 text

@Extension public … class DescriptorImpl #jenkins_spb 35

Slide 36

Slide 36 text

Descriptor @Extension Descriptor Descriptor #jenkins_spb 36

Slide 37

Slide 37 text

Extension Points Wrapper Триггер Builder Publisher #jenkins_spb 37

Slide 38

Slide 38 text

Extension Points #jenkins_spb Action 38

Slide 39

Slide 39 text

#jenkins_spb jenkins/view/…/job/…/3/someActionUrl/ Action Любое содержимое Любой внешний вид Любое API 39

Slide 40

Slide 40 text

Внешний вид #jenkins_spb 40

Slide 41

Slide 41 text

Внешний вид src/main/resources имя_класса/config.jelly #jenkins_spb 41

Slide 42

Slide 42 text

Jelly XML Отдельный #jenkins_spb 42

Slide 43

Slide 43 text

Stapler Загрузка UI Формочки #jenkins_spb 43

Slide 44

Slide 44 text

Запуск mvn hpi:run Можно дебажить (докинув MAVEN_OPTS)! #jenkins_spb 44

Slide 45

Slide 45 text

Тестирование Как не тратить много времени #jenkins_spb 45

Slide 46

Slide 46 text

Unit tests Каждый отдельный элемент в вакууме Power Mock + Java Agent Mockito #jenkins_spb 46

Slide 47

Slide 47 text

Jenkins Rule Полноценный jenkins @Rule public JenkinsRule jRule = new JenkinsRule(); jRule.jenkins #jenkins_spb 47

Slide 48

Slide 48 text

WebClient Для stapler и форм #jenkins_spb 48

Slide 49

Slide 49 text

[email protected] #jenkins_spb 49 Меркушев Кирилл @delnariel lanwen