УДК 004.42
ББК 32.973
Л26
Л26 Брент Ластер
Jenkins 2. Приступаем к работе. / пер. с англ. Д. А. Беликова. – М.: ДМК
Пресс, 2019. – 652 с.: ил.
ISBN 978-5-97060-711-4
Книга посвящена Jenkins – программной системе с открытым исходным
кодом на Java, предназначенной для обеспечения процесса непрерывной
интег рации программного обеспечения. Автор показывает,
насколько Jenkins 2 отличается от более традиционных версий этой популярной
платформы автоматизации с открытым исходным кодом, предназначенных
только для интернета. Если вы знакомы с Jenkins и хотите
воспользоваться новыми технологиями для преобразования устаревших
конвейеров или создания новых современных автоматизированных сред
непрерывной доставки, эта книга – для вас.
Вы получите полное практическое руководство работы с контейнерами,
изучите новый графический интерфейс Blue Ocean.
Издание будет полезно всем разработчикам программного обеспечения.
УДК
004.42
ББК 32.973
Original English language edition published by O’Reilly Media, Inc. Copyright
Все права защищены. Любая часть этой книги не может быть воспроиз©
2018 Brent Laster. All rights reserved. Russian-language edition copyright © 2019 by
DMK Press. All rights reserved.
ведена в какой бы то ни было форме и какими бы то ни было средствами без
письменного разрешения владельцев авторских прав.
Материал, изложенный в данной книге, многократно проверен. Но, поскольку
вероятность технических ошибок все равно существует, издательство не может
гарантировать абсолютную точность и правильность приводимых сведений. В
связи с этим издательство не несет ответственности за возможные ошибки, связанные
с использованием книги.
ISBN 978-1-491-97959-4 (англ.) Copyright © 2018 Brent Laster. All rights reserved.
ISBN 978-5-97060-711-4 (рус.) © Оформление, перевод на русский язык, издание,
ДМК Пресс, 2019
Стр.5
Оглавление
Введение ...............................................................................................................................14
Предисловие .........................................................................................................................15
Как использовать эту книгу ..........................................................................................................15
Обозначения, используемые в этой книге .................................................................................... 17
Использование примеров кода ......................................................................................................... 17
Как с нами связаться ......................................................................................................................19
Благодарности ...................................................................................................................................19
Глава 1. Представляем Jenkins 2 .......................................................................................22
Что такое Jenkins 2? ........................................................................................................................23
Jenkinsfile .................................................................................................................................................... 24
Декларативные конвейеры ................................................................................................................. 25
Интерфейс Blue Ocean .......................................................................................................................... 27
Новые типы заданий в Jenkins 2 ....................................................................................................... 29
Причины перехода ..........................................................................................................................32
Движение DevOps ................................................................................................................................... 32
Сборка конвейеров ................................................................................................................................ 32
Возобновляемость .................................................................................................................................. 32
Конфигурируемость ................................................................................................................................ 33
Совместное использование рабочих пространств .................................................................... 33
Специализированные знания ............................................................................................................ 34
Доступ к логике ........................................................................................................................................ 34
Управление источником конвейера ................................................................................................ 34
Конкуренция .............................................................................................................................................. 34
Отвечая на вызовы ..........................................................................................................................35
Совместимость ...................................................................................................................................35
Совместимость конвейеров ................................................................................................................ 36
Совместимость плагинов ...................................................................................................................... 38
Проверка совместимости ..................................................................................................................... 43
Резюме ..................................................................................................................................................43
Глава 2. Основы ....................................................................................................................46
Синтаксис: сценарные конвейеры против декларативных ............................................47
Выбор между сценарным и декларативным синтаксисами .................................................. 48
Системы: ведущие, узлы, агенты и исполнители .................................................................50
Ведущая система ..................................................................................................................................... 50
Стр.6
6 Оглавление
Узел ............................................................................................................................................................. 51
Агент ............................................................................................................................................................. 51
Исполнитель .............................................................................................................................................. 52
Создание узлов ........................................................................................................................................ 53
Структура: работа с DSL Jenkins .................................................................................................55
Узел ............................................................................................................................................................. 57
Этап ............................................................................................................................................................. 59
Шаги ............................................................................................................................................................. 59
Поддержка среды: разработка сценария конвейера .......................................................61
Начинаем проект конвейера .............................................................................................................. 62
Редактор ...................................................................................................................................................... 64
Работа с генератором сниппетов ..................................................................................................... 65
Запуск конвейера .................................................................................................................................... 69
Replay ........................................................................................................................................................... 77
Резюме ..................................................................................................................................................81
Глава 3. Поток выполнения конвейера ............................................................................82
Инициирование заданий ..............................................................................................................82
Сборка после того, как собраны другие проекты ...................................................................... 83
Собирать периодически ....................................................................................................................... 84
Триггер перехватчиков GitHub для опроса GitSCM .................................................................. 87
Опрос SCM ................................................................................................................................................. 87
Период тишины ........................................................................................................................................ 88
Триггер выполняет сборку удаленно .............................................................................................. 88
Пользовательский ввод .................................................................................................................89
input ............................................................................................................................................................. 89
Параметры ................................................................................................................................................. 93
Возвращаемые значения из нескольких входных параметров ....................................... 100
Параметры и декларативные конвейеры .................................................................................. 101
Параметры управления потоком ............................................................................................ 107
timeout ...................................................................................................................................................... 107
retry .......................................................................................................................................................... 109
sleep .......................................................................................................................................................... 109
waitUntil ................................................................................................................................................... 109
Работа с параллелизмом ............................................................................................................112
Блокировка ресурсов с помощью шага lock ............................................................................. 112
Управление параллельными сборками с помощью шага milestone .............................. 115
Ограничение параллелизма в разветвленных конвейерах ............................................... 117
Параллельный запуск задач ............................................................................................................ 117
Условное выполнение .................................................................................................................128
Постобработка ................................................................................................................................130
Постобработка сценарных конвейеров ...................................................................................... 131
Стр.7
Оглавление 7
Декларативные конвейеры и постобработка ........................................................................... 133
Резюме ...............................................................................................................................................134
Глава 4. Уведомления и отчеты .......................................................................................136
Уведомления ...................................................................................................................................136
Электронная почта ............................................................................................................................... 137
Службы совместной работы ............................................................................................................. 149
Отчеты ................................................................................................................................................162
Публикация отчетов в формате HTML ......................................................................................... 162
Резюме ...............................................................................................................................................165
Глава 5. Доступ и безопасность .......................................................................................167
Защита Jenkins ................................................................................................................................ 167
Включение защиты .............................................................................................................................. 168
Другие параметры глобальной безопасности ......................................................................... 173
Учетные данные в Jenkins.......................................................................................................... 177
Области учетных данных .................................................................................................................. 179
Домены учетных данных .................................................................................................................. 180
Поставщики учетных данных .......................................................................................................... 180
Хранилища учетных данных ........................................................................................................... 181
Администрирование учетных данных ..................................................................................181
Выбор поставщиков учетных данных .......................................................................................... 181
Выбор типов учетных данных ......................................................................................................... 182
Указание типов учетных данных по поставщику .................................................................... 183
Создание и управление учетными данными .....................................................................184
Контекстные ссылки ............................................................................................................................ 186
Добавление нового домена и учетных данных ....................................................................... 187
Использование нового домена и учетных данных ................................................................ 190
Расширенные учетные данные: доступ на основе ролей ............................................191
Основное использование ................................................................................................................. 192
Управление ролями ............................................................................................................................. 193
Назначение ролей ............................................................................................................................... 199
Макросы Role Strategy ....................................................................................................................... 203
Работа с учетными данными в конвейере..........................................................................206
Имя пользователя и пароль ............................................................................................................. 206
Учетные данные маркера ................................................................................................................. 207
Контроль безопасности сценариев .......................................................................................208
Проверка сценариев........................................................................................................................... 209
Утверждение сценариев ................................................................................................................... 210
Песочница Groovy .........................................................................................................................211
Использование учетных данных Jenkins с Vault ..............................................................214
Стр.8
8 Оглавление
Подход ...................................................................................................................................................... 214
Настройка ................................................................................................................................................ 214
Создание политики .............................................................................................................................. 215
Аутентификация .................................................................................................................................... 216
Использование Vault в Jenkins ....................................................................................................... 218
Резюме ...............................................................................................................................................222
Глава 6. Расширяем ваш конвейер .................................................................................224
Доверенные и недоверенные библиотеки .........................................................................224
Внутренние и внешние библиотеки ......................................................................................225
Внутренние библиотеки .................................................................................................................... 225
Внешние библиотеки .......................................................................................................................... 228
Получение библиотеки из исходного хранилища ..........................................................230
Современная система управления исходным кодом (Modern SCM) ............................... 230
Унаследованная система управления исходным кодом (Legacy SCM) ........................... 231
Использование библиотек в вашем сценарии .................................................................232
Автоматическая загрузка библиотек из системы контроля версий ................................ 232
Загрузка библиотек в ваш сценарий ........................................................................................... 232
Библиотеки в элементах Jenkins .............................................................................................236
Структура библиотеки ................................................................................................................. 237
Образец программы библиотеки ........................................................................................... 237
Структура кода общей библиотеки ............................................................................................... 238
Использование сторонних библиотек ..................................................................................251
Загрузка кода напрямую ............................................................................................................252
Загрузка кода из внешней SCM ..............................................................................................253
Воспроизведение внешнего кода и библиотек ................................................................255
Более пристальный взгляд на доверенный и недоверенный коды ......................... 257
Резюме ...............................................................................................................................................260
Глава 7. Декларативные конвейеры ...............................................................................261
Мотивация ........................................................................................................................................262
Не интуитивно понятен ..................................................................................................................... 262
Получение Groovy ................................................................................................................................ 263
Требуется дополнительная сборка................................................................................................ 263
Структура ..........................................................................................................................................264
Блок .......................................................................................................................................................... 264
Раздел ....................................................................................................................................................... 265
Директивы ............................................................................................................................................... 266
Steps .......................................................................................................................................................... 267
Условные операторы .......................................................................................................................... 267
Стр.9
Оглавление 9
Строительные блоки..................................................................................................................... 267
pipeline ..................................................................................................................................................... 269
agent .......................................................................................................................................................... 269
environment ............................................................................................................................................ 274
tools .......................................................................................................................................................... 275
options ...................................................................................................................................................... 278
Триггеры ................................................................................................................................................... 281
parameters ............................................................................................................................................... 284
libraries ..................................................................................................................................................... 287
stages ......................................................................................................................................................... 288
post .......................................................................................................................................................... 292
Работа с недекларативным кодом .........................................................................................294
Проверьте свои плагины ................................................................................................................... 295
Создайте общую библиотеку ........................................................................................................... 295
Поместить код за пределы блока pipeline ................................................................................. 295
Оператор script ..................................................................................................................................... 295
Использование parallel в этапе ..............................................................................................296
Проверка сценариев и отчеты об ошибках ....................................................................... 297
Декларативные конвейеры и интерфейс Blue Ocean ....................................................300
Резюме ...............................................................................................................................................301
Глава 8. Понимание типов проектов ...............................................................................303
Общие параметры проекта .......................................................................................................303
Общие ....................................................................................................................................................... 303
Управление исходным кодом ......................................................................................................... 311
Триггеры сборки ................................................................................................................................... 312
Среда сборок ......................................................................................................................................... 322
Сборка ....................................................................................................................................................... 333
Действия после сборки ...................................................................................................................... 333
Типы проектов ................................................................................................................................334
Проекты Freestyle ................................................................................................................................ 334
Тип проекта Maven .............................................................................................................................. 335
Тип проекта Pipeline ........................................................................................................................... 338
Тип проекта External Job ................................................................................................................... 341
Тип проекта Multiconfiguration ....................................................................................................... 344
Проекты Ivy ............................................................................................................................................. 350
Папки ......................................................................................................................................................... 352
Проекты Multibranch Pipeline ......................................................................................................... 358
Проекты GitHub Organization .......................................................................................................... 363
Проекты Bitbucket Team/Project..................................................................................................... 368
Резюме ...............................................................................................................................................371
Стр.10
10 Оглавление
Глава 9. Интерфейс Blue Ocean ........................................................................................373
Часть 1. Управление существующими конвейерами ......................................................374
Панель инструментов ......................................................................................................................... 375
Страница проекта ................................................................................................................................. 379
Страница запуска ................................................................................................................................. 391
Часть 2: Работа с редактором Blue Ocean...........................................................................402
Создание нового конвейера без существующего файла Jenkinsfile ............................... 402
Работа в редакторе .............................................................................................................................. 406
Редактирование существующего конвейера ............................................................................ 418
Импорт и редактирование существующих конвейеров ....................................................... 421
Работа с конвейерами из репозиториев non-GitHub ........................................................... 433
Резюме ...............................................................................................................................................434
Глава 10. Конвертация ......................................................................................................437
Общая подготовка ........................................................................................................................438
Логика и точность ................................................................................................................................. 438
Тип проекта ............................................................................................................................................. 438
Системы .................................................................................................................................................... 439
Доступ ....................................................................................................................................................... 439
Глобальная конфигурация ................................................................................................................ 439
Плагины .................................................................................................................................................... 440
Общие библиотеки .............................................................................................................................. 440
Конвертация конвейера Freestyle в сценарный конвейер ..........................................441
Source ........................................................................................................................................................ 445
Compile ..................................................................................................................................................... 451
Модульные тесты .................................................................................................................................. 456
Интеграционное тестирование ....................................................................................................... 461
Перемещение последующих частей конвейера ..................................................................... 465
Конвертация проекта Jenkins Pipeline в файл Jenkinsfile ............................................472
Подход ...................................................................................................................................................... 475
Заключительные шаги ........................................................................................................................ 482
Конвертация сценарного конвейера в декларативный ................................................485
Образец конвейера ............................................................................................................................. 486
Конвертация ........................................................................................................................................... 488
Завершение конвертации ................................................................................................................. 492
Общее руководство по конвертации ....................................................................................493
Резюме ...............................................................................................................................................496
Глава 11. Интеграция с ОС (оболочки, рабочие пространства, среды и файлы) .....497
Использование шагов оболочки .............................................................................................498
Шаг sh ........................................................................................................................................................ 498
Шаг bat ...................................................................................................................................................... 504
Стр.11
Оглавление 11
Шаг PowerShell ...................................................................................................................................... 506
Работа с переменными среды .................................................................................................508
Шаг withEnv ............................................................................................................................................ 509
Работа с рабочими пространствами .....................................................................................511
Создание пользовательского рабочего пространства .......................................................... 511
Очистка рабочего пространства .................................................................................................... 514
Шаги для работы с файлами и каталогами ........................................................................516
Работа с файлами ................................................................................................................................. 516
Работа с каталогами ............................................................................................................................ 518
Добиться большего, работая с файлами и каталогами ......................................................... 519
Резюме ...............................................................................................................................................521
Глава 12. Интеграция инструментов анализа ................................................................523
SonarQube Survey ..........................................................................................................................524
Работа с отдельными правилами .................................................................................................. 525
Ворота качества и профили качества .......................................................................................... 529
Сканер ....................................................................................................................................................... 531
Использование SonarQube с Jenkins .....................................................................................532
Глобальная конфигурация ................................................................................................................ 532
Использование SonarQube в проектe Freestyle ...................................................................... 533
Использование SonarQube в проекте Pipeline ........................................................................ 534
Использование результатов анализа SonarQube ................................................................... 535
Интеграция выходных данных SonarQube с Jenkins ............................................................. 540
Покрытие кода: интеграция с JaCoCo ....................................................................................540
О JaCoCo ................................................................................................................................................... 541
Интеграция JaCoCo с конвейером ................................................................................................. 542
Интеграция выходных данных JaCoCo с Jenkins ..................................................................... 544
Резюме ...............................................................................................................................................545
Глава 13. Интеграция управления артефактами ..........................................................547
Публикация и получение артефактов ................................................................................... 547
Настройка и глобальная конфигурация ...............................................................................549
Использование Artifactory в сценарном конвейере .......................................................550
Выполнение других задач .........................................................................................................555
Скачивание определенных файлов в определенные места .............................................. 555
Загрузка определенных файлов в определенные места ..................................................... 556
Настройка политик хранения сборок .......................................................................................... 556
Развертывание сборки ....................................................................................................................... 557
Интеграция с декларативным конвейером ........................................................................ 557
Интеграция Artifactory с выходными данными Jenkins .................................................558
Архивация артефактов и снятие отпечатков .....................................................................559
Стр.12
12 Оглавление
Резюме ...............................................................................................................................................566
Глава 14. Интеграция контейнеров .................................................................................568
Сконфигурирован как облако ..................................................................................................568
Глобальная конфигурация ................................................................................................................ 569
Использование образов Docker в качестве агентов.............................................................. 573
Использование образов облака в конвейере .......................................................................... 578
Агент декларативного конвейера, созданный на лету ..................................................583
Глобальная переменная docker ...............................................................................................586
Глобальные переменные ................................................................................................................... 586
Методы глобальной переменной приложения Docker ......................................................... 588
Методы глобальных переменных Docker для работы с образами .................................. 595
Методы глобальных переменных Docker для работы с контейнерами ........................ 600
Запуск Docker через оболочку ................................................................................................601
Резюме ...............................................................................................................................................601
Глава 15. Другие интерфейсы ..........................................................................................604
Использование интерфейса командной строки ..............................................................605
Использование прямого интерфейса SSH ................................................................................. 605
Использование клиента командной строки ............................................................................. 608
Использование REST API ............................................................................................................612
Фильтрация результатов ................................................................................................................... 612
Инициирование сборок ..................................................................................................................... 615
Использование консоли сценариев ...................................................................................... 617
Резюме ...............................................................................................................................................620
Глава 16. Поиск и устранение неисправностей .............................................................621
Детальное изучение шагов конвейера ................................................................................621
Работа с ошибками сериализации .........................................................................................625
Cтиль передачи продолжений ........................................................................................................ 625
Сериализация конвейеров ............................................................................................................... 625
NotSerializableException ................................................................................................................... 626
Обработка несериализуемых ошибок ......................................................................................... 627
Определение строки в вашем сценарии, вызвавшей ошибку....................................630
Обработка исключений в конвейере....................................................................................632
Использование недекларативного кода в декларативном конвейере ..................632
Неутвержденный код (утверждение сценариев и методов) ....................................... 637
Неподдерживаемые операции ...............................................................................................638
Системные журналы.....................................................................................................................638
Временные метки .........................................................................................................................640
Стр.13
Оглавление 13
Настройка долговечности конвейера ...................................................................................642
Резюме ...............................................................................................................................................644
Сведения об авторе ...........................................................................................................645
Об иллюстрации на обложке ...........................................................................................646
Предметный указатель .....................................................................................................647
Стр.14