Slide 1

Slide 1 text

© 2016 CloudBees, Inc. All Rights Reserved 1 © 2016 CloudBees, Inc. All Rights Reserved Развертывание туловой инфраструктуры в Jenkins Олег Ненашев (@oleg_nenashev) CloudBees, Inc. Санкт-­Петербург,   27  мая,  2016 St.  Petersburg   Jenkins  Meetup @jenkins_spb

Slide 2

Slide 2 text

© 2016 CloudBees, Inc. All Rights Reserved 2 О себе. Jenkins • Проект Jenkins, Core team – Развитие ядра, поддержка плагинов – Jenkins Org Admin в Google Summer of Code – Организатор митапов • Jenkins Developer в CloudBees – CloudBees – контрибьютор Jenkins – Помогаем строить enterprise-системы на базе Jenkins – CloudBees Jenkins Platform – Поддержка 24/7 @oleg_nenashev oleg-­nenashev onenashev

Slide 3

Slide 3 text

© 2016 CloudBees, Inc. All Rights Reserved 3 • ~10 лет в R&D и автоматизации • Фокус: электроника и встраиваемое ПО – Intel, Sitronics, Synopsys • Автоматизация тестирования и QA • Развертывание и поддержка больших систем автоматизации О себе. @oleg_nenashev oleg-­nenashev onenashev

Slide 4

Slide 4 text

© 2016 CloudBees, Inc. All Rights Reserved 4 Disclaimer: • Презентация не является тренингом • Презентация отражает личное мнение докладчика • Личное мнение докладчика может не совпадать с позицией компании или сообщества Jenkins • Ссылки на картинки – в бэкапе О чем доклад? Как?

Slide 5

Slide 5 text

© 2016 CloudBees, Inc. All Rights Reserved 5 Тулы

Slide 6

Slide 6 text

© 2016 CloudBees, Inc. All Rights Reserved 6 Что есть в Jenkins? >1200 плагинов Интеграция с сотнями тулов Управление процессами автоматизации Автоматизация любых задач Code & Commit Build & Config Scan & Test Release Deploy

Slide 7

Slide 7 text

© 2016 CloudBees, Inc. All Rights Reserved 7 1. Локальная установка на ноде 2. Внешние менеджеры тулов 3. Виртуализация 4. Решения на базе Jenkins Пути использования тулов

Slide 8

Slide 8 text

© 2016 CloudBees, Inc. All Rights Reserved 8 • Преимущества: – Не надо думать – Быстро – для нескольких машин • Недостатки: – Не масштабируемо – Сложно администрировать – Несколько админов всё сломают… Локальная установка тулов

Slide 9

Slide 9 text

© 2016 CloudBees, Inc. All Rights Reserved 9 1. Локальная установка на ноде 2. Внешние менеджеры тулов – Modules – “Generic Builds” (доклад Анны) 3. Виртуализация 4. Решения на базе Jenkins Пути использования тулов

Slide 10

Slide 10 text

© 2016 CloudBees, Inc. All Rights Reserved 10 • http://modules.sourceforge.net/ • Преимущества: – Стандартная экосистема – Легко мигрировать легаси-скрипты • Недостатки: – Работает на уровне скрипта – В Jenkins скриптов обычно много L – Пример. Modules %  module  load  gcc/3.1.1   %  which  gcc /usr/local/gcc/3.1.1/linux/bin/gcc %  module  switch  gcc gcc/3.2.0   %  which  gcc /usr/local/gcc/3.2.0/linux/bin/gcc %  module  unload  gcc %  which  gcc gcc not  found  

Slide 11

Slide 11 text

© 2016 CloudBees, Inc. All Rights Reserved 11 1. Локальная установка на ноде 2. Внешние менеджеры тулов 3. Виртуализация – Виртуальные машины + Infrastructure as Code – Контейнеры 4. Решения на базе Jenkins Пути использования тулов

Slide 12

Slide 12 text

© 2016 CloudBees, Inc. All Rights Reserved 12 • Приготовили образ и залили в – E.g. Docker Registry • Используем по-необходимости: – Часто используем => обычный слейв – Редко используем => Cloud API Jenkins o AWS, EC2, vSphere, Mesos, Docker, … – Для любителей => Build Wrapper’ы Виртуализация тулов. Подход

Slide 13

Slide 13 text

© 2016 CloudBees, Inc. All Rights Reserved 13 • Преимущества: – Просто и быстро, если есть инфраструктура – Балансировка нагрузки (e.g. vCenter, Docker Swarm) – Развертывание сложных систем (e.g. Docker Compose) – Configuration as code (напр. Puppet) – Чистое окружение • Недостатки: – Плохо масштабируется при большом количестве тулов – Плохо работает для больших тулов Пример. Виртуализация и контейнеры

Slide 14

Slide 14 text

© 2016 CloudBees, Inc. All Rights Reserved 14 Их много… • Docker plugin • Docker Custom Build Environment Plugin • … • Yet Another Docker Plugin Пример: Docker-плагины

Slide 15

Slide 15 text

© 2016 CloudBees, Inc. All Rights Reserved 15 Пример. Docker и Pipeline • Запуск задачи внутри контейнера: • Сборка и публикация образов:

Slide 16

Slide 16 text

© 2016 CloudBees, Inc. All Rights Reserved 16 1. Локальная установка на ноде 2. Внешние менеджеры тулов 3. Виртуализация 4. Решения на базе Jenkins – Стандартные плагины – Custom Tools Пути использования тулов

Slide 17

Slide 17 text

© 2016 CloudBees, Inc. All Rights Reserved 17 • Многие плагины используют CLI-тулы – Git, Perforce – Gradle, Maven, JDK – … • Работают из коробки Стандартные плагины

Slide 18

Slide 18 text

© 2016 CloudBees, Inc. All Rights Reserved 18 Тулы в Jenkins Настройки тулов

Slide 19

Slide 19 text

© 2016 CloudBees, Inc. All Rights Reserved 19 Использование

Slide 20

Slide 20 text

© 2016 CloudBees, Inc. All Rights Reserved 20 Тул №1 Тул №2

Slide 21

Slide 21 text

© 2016 CloudBees, Inc. All Rights Reserved 21 • Tool Installation – описание одной из реализаций тула (e.g. Gradle_Default) – Точка расширения в Jenkins • Tool Installer – по запросу отдаёт путь к директории с тулом – Инсталлятор не всегда что-то инсталлирует! – Точка расширения в Jenkins Тулы в Jenkins. Термины

Slide 22

Slide 22 text

© 2016 CloudBees, Inc. All Rights Reserved 22 Структура тулов в Jenkins Tool Installation Tool Installer «Обычный» инсталлятор Downloadable 1 N Update Site Список доступных версий Label expression Пример: linux && arm

Slide 23

Slide 23 text

© 2016 CloudBees, Inc. All Rights Reserved 23 Не хватает стандартных плагинов? • Возвращаемся к CLI… • Типовые шаги: 1. Приготовить окружение 2. Вызвать тул в скрипте через CLI 3. [Опционально] – Обработать результаты o Типовой подход – конвертация в стандартные форматы 4. Публикация результатов, обработка ошибок

Slide 24

Slide 24 text

© 2016 CloudBees, Inc. All Rights Reserved 24 Не хватает стандартных плагинов? • Управляем окружением: – EnvInject Plugin – Tool Environment Plugin – Custom Tools Plugin • Проблема - настройка

Slide 25

Slide 25 text

© 2016 CloudBees, Inc. All Rights Reserved 25 • Настраиваемые инсталляторы – unpack ZIP, download by URL, from folder • Установка окружения – PATH, LM_LICENSE_FILE, env. vars) • Гибкая настройка в зависимости от типа ноды – Пример: разная инсталляция Linux / Windows • Версионирование тулов – Extended Choice Parameter Фичи Custom Tools

Slide 26

Slide 26 text

© 2016 CloudBees, Inc. All Rights Reserved 26 Глобальные настройки. Инсталлятор • Инсталлятор: • «Хитрая инсталляция» • Установка с шареной директории

Slide 27

Slide 27 text

© 2016 CloudBees, Inc. All Rights Reserved 27 • Инсталляторы управляются лейблами • Дополнительно: переменные и пути Глобальные настройки. Специфика для нод

Slide 28

Slide 28 text

© 2016 CloudBees, Inc. All Rights Reserved 28 Настройка задачи. Build Wrapper • “Инсталляция” в начале сборки + проверка • Все системные вызовы получают окружение с тулом

Slide 29

Slide 29 text

© 2016 CloudBees, Inc. All Rights Reserved 29 • Build wrapper разворачивает окружение • В скриптах не надо ничего настраивать Использование тулов В  шагах  сборки:

Slide 30

Slide 30 text

© 2016 CloudBees, Inc. All Rights Reserved 30 • Движок: – Extended Choice Plugin – У плагина есть проблемы со стабильностью • Версии задаются: – Через список – Через property-файл (файловая система, URL) Custom Tools. Версионирование тулов

Slide 31

Slide 31 text

© 2016 CloudBees, Inc. All Rights Reserved 31 Custom Tools. Версионирование тулов Задание   версии   через   параметры При   запуске   билда…

Slide 32

Slide 32 text

© 2016 CloudBees, Inc. All Rights Reserved 32 • Custom Tools - всего лишь плагин • Нужен бэкенд • Что мы делаем? – Scriptler scripts => управление скриптами – Синхронизация => rsync – Всё в Jenkins. Две задачи o Задачи: Install Tool, Remove Tool Строим туловую инфраструктуру

Slide 33

Slide 33 text

© 2016 CloudBees, Inc. All Rights Reserved 33 Структура userContent/tools/ customTools.prop ${MY_TOOL}_VERSIONS ${MY_TOOL}_DEFAULT_VERSION Staging- репозиторий Репозиторий / Сайт 1 Репозиторий / Сайт 2 Репозиторий / Сайт N . . . VPN

Slide 34

Slide 34 text

© 2016 CloudBees, Inc. All Rights Reserved 34 Tool Delivery Pipeline. Инсталляция Spot-check на Staging-репозитории RSYNC Spot-check на файлерах Модификация property-файла Задача (Matrix): ${MY_TOOL}_SPOTCHECK * smoke-тест тула * JUnit Publisher HTTP Параметры: • Номер версии • Путь к папке на staging

Slide 35

Slide 35 text

© 2016 CloudBees, Inc. All Rights Reserved 35 • Интеграции с Pipeline пока нет L • TODO на июнь Custom Tools Plugin и Pipeline

Slide 36

Slide 36 text

© 2016 CloudBees, Inc. All Rights Reserved 36 • В Jenkins можно строить туловые инфраструктуры • Советы: – Если возможно - используйте виртуалки и Докер – Иначе – Custom Tools или внешние менеджеры тулов – А лучше - комбинируйте Заключение

Slide 37

Slide 37 text

© 2016 CloudBees, Inc. All Rights Reserved 37 © 2016 CloudBees, Inc. All Rights Reserved Contacts: E-­mail:  [email protected] GitHub/Gitter: Twitter:  @oleg_nenashev oleg-­nenashev