SPb Jenkins Meetup #3 - Развертывание туловой инфраструктуры в Jenkins

SPb Jenkins Meetup #3 - Развертывание туловой инфраструктуры в Jenkins

В процессе автоматизации продуктов могут использоваться десятки и сотни различных инструментальных средств: компиляторы, системы сборки, симуляторы и т.п. Не для каждого из них Jenkins есть плагины, но в обычно можно обойтись и без них. При этом локальная установка тулов на каждой машине не является выходом для больших инсталляций. Я расскажу о том, как можно создавать туловые инфраструктуры для Jenkins с помощью Custom Tools Plugin, Docker, сетевых дисков и других подручных средств.

568e3391c8b528f2b255443e4cca27ca?s=128

Oleg Nenashev

May 27, 2016
Tweet

Transcript

  1. © 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
  2. © 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
  3. © 2016 CloudBees, Inc. All Rights Reserved 3 • ~10

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

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

  6. © 2016 CloudBees, Inc. All Rights Reserved 6 Что есть

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

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

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

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

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

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

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

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

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

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

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

    Jenkins Настройки тулов
  19. © 2016 CloudBees, Inc. All Rights Reserved 19 Использование

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

    Тул №2
  21. © 2016 CloudBees, Inc. All Rights Reserved 21 • Tool

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

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

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

    стандартных плагинов? • Управляем окружением: – EnvInject Plugin – Tool Environment Plugin – Custom Tools Plugin • Проблема - настройка
  25. © 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
  26. © 2016 CloudBees, Inc. All Rights Reserved 26 Глобальные настройки.

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

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

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

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

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

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

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

    customTools.prop ${MY_TOOL}_VERSIONS ${MY_TOOL}_DEFAULT_VERSION Staging- репозиторий Репозиторий / Сайт 1 Репозиторий / Сайт 2 Репозиторий / Сайт N . . . VPN
  34. © 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
  35. © 2016 CloudBees, Inc. All Rights Reserved 35 • Интеграции

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

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

    CloudBees, Inc. All Rights Reserved Contacts: E-­mail:  onenashev@cloudbees.com GitHub/Gitter: Twitter:  @oleg_nenashev oleg-­nenashev