Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Generic Jobs в Jenkins или как собрать все что угодно

Anna Muravieva
May 29, 2016
430

Generic Jobs в Jenkins или как собрать все что угодно

Anna Muravieva

May 29, 2016
Tweet

Transcript

  1. 1 © Copyright 2016 EMC Corporation. All rights reserved. GENERIC

    JOBS В JENKINS ИЛИ КАК СОБРАТЬ ВСЕ ЧТО УГОДНО
  2. 4 © Copyright 2016 EMC Corporation. All rights reserved. •

    Большие и корпоративные • Cloud-native application development • DPA- автоматизация мониторинга, анализа и составления репортов для backup и recovery окружений • Снижение сложности, затрат и устранение ручных усилий Используем Jenkins Server для решения задач: • Continuous Integration • Delivery • Releasing • Customization • Pipeline Cloud build infrastructure
  3. 5 © Copyright 2016 EMC Corporation. All rights reserved. Roadblocks

    & challenges • В облаке построение build инфраструктуры привычными flow не подходит • Разным микросервисам требуются разные инструменты сборки • В проекте используются скрипты, которые всегда соответствовать правильной версии • Снижение усилий направленных на настройку slave-ов
  4. 6 © Copyright 2016 EMC Corporation. All rights reserved. Agenda

     Introduction - Cloud build infrastructure - Roadblocks & challenges  Generic Jobs - Параметризация Jenkins Build - Использование groovy scripts - Multi Project Jenkins Job - Blue Green Deployment Job - Virtual Machine Packaging Job  Wrappers - Build tools wrappers - Запуск task с помощью wrapper - Pros & Cons  Conclusion - Additional notes - Q&A
  5. 8 © Copyright 2016 EMC Corporation. All rights reserved. OVERVIEW

    Generic build позволяет собирать проекты любого типа с нестандартной конфигурацией и применением различных build tool-ов и опций. Помимо этого: - Встроенный язык сценариев - Пользовательские custom-сбороки - Использование make-скриптов на post, pre-build steps - Input branch parameters & options
  6. 9 © Copyright 2016 EMC Corporation. All rights reserved. GENERIC

    JOBS Параметризированный Jenkins Build
  7. 10 © Copyright 2016 EMC Corporation. All rights reserved. Использование

    Groovy scripts Jenkins имеет встроенный язык сценариев, Groovy. Полезен когда необходимо сделать что- то что не предусмотрено каким-либо плагином или параметрами. GENERIC JOBS
  8. 12 © Copyright 2016 EMC Corporation. All rights reserved. Конфигурация

    Split Install Job Silent install ./run.sh запускается после установки Измерение performance: CP, memory
  9. 16 © Copyright 2016 EMC Corporation. All rights reserved. GENERIC

    JOBS Blue Green Deployment Jenkins Job 2 инстанса master-джобы позволяет работать над одним(синим), пока другой(зеленый) остается стабильным Алгоритм Джобы: 1. На каждом шаге проверяется наличие микросервисов указанных в параметрах в продакшен листе 2. Деплоится новый артефакт микросервиса в клауд 3. При добавлении каждого нового инстанса к приложению, проверяется его статус. При каждой ошибке, происходит rollback 4. Удаляется старый URL из нового приложения 5. Останавливается старое приложение 6. Обновляется продакшен лист микросервисов
  10. 20 © Copyright 2016 EMC Corporation. All rights reserved. •

    Универсальные модули (как для *nix и windows систем) • Удобное дополнение для build server-ов, применимое в облаке, где контролировать построение build инфраструктуры обычным способом не подходит • Могут быть полезны когда разным сервисам требуются разные версии build tool • Если в проекте используются скрипты, ими удобно управлять используя wrapper • Support tools: Maven, Ant, Gradle (OS: Win 64, Linux) Как реализован wrapper: Указываем версию tool во wrapper.properties distributionUrl = http://distributions/tool-1.12-bin.zip Определяется место установки дистрибутива, откуда будет вызван tool-launcher.jar Скачивается/распаковывается архив Установка build tool Wrapper Build tools wrappers
  11. 21 © Copyright 2016 EMC Corporation. All rights reserved. •

    Декларируем wrapper task: build.gradle -> task wrapper(type: Wrapper) { gradleVersion = '2.6' //собрать gradle 2.6 } • Запускаем task: Bash $ ./gradlew Windows gradlew.bat clean install :wrapper BUILD SUCCESSFUL • Cгенерированные файлы сохраняются в vcs: gradlew, gradle-wrapper.jar Wrapper Запуск task с помощью wrapper
  12. 24 © Copyright 2016 EMC Corporation. All rights reserved. •

    Configuration as Code • Reproducible, stable & self-contained builds • Wrapper хранится в VCS : - Всегда соответствует версии build скрипта - В любой момент времени можно сделать checkout версии двух годовой давности • Тем не менее коммитить wrapper в VCS не совсем правильно • Если ваша организация добавляет скрипты, ими удобно управлять используя wrapper Wrapper Pros & cons
  13. 26 © Copyright 2016 EMC Corporation. All rights reserved. ADDITIONAL

    NOTES • Jenkins – это мощный инструмент непрерывной интеграции, который автоматизирует множество процессов и рутинных задач связанных с настройкой и мониторингом изменений при работе с сервером. • Но, помимо этого, Jenkins все же стоит рассматривать как настраиваемую платформу • Большое число «плагинов» позволяет использовать Jenkins во многих сценариях • Но если встает необходимость добавить что-то что не предусмотрено плагинами, то свободное определение настроек (generic jobs) и модули будут незаменимы.