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

SPB Jenkins Meetup #8. Управляем коифигурациями Jenkins через Groovy-хуки

SPB Jenkins Meetup #8. Управляем коифигурациями Jenkins через Groovy-хуки

Я расскажу, как можно с помощью Docker и Groovy Hook Script эффективно управлять конфигурацией Jenkins и использовать возможности IDE при разработке.

Демо 1: https://github.com/oleg-nenashev/demo-jenkins-config-as-code
Демо 2: https://github.com/librecores/librecores-ci
Митап: https://www.meetup.com/St-Petersburg-Jenkins-Meetup/events/243044875

Oleg Nenashev

September 21, 2017
Tweet

More Decks by Oleg Nenashev

Other Decks in Programming

Transcript

  1. © 2017 CloudBees, Inc. All Rights Reserved. 2 @oleg_nenashev, @jenkins_spb

    Обо мне @oleg_nenashev oleg-nenashev librecores.org Jenkins SPb Политех
  2. © 2017 CloudBees, Inc. All Rights Reserved. 3 @oleg_nenashev, @jenkins_spb

    Oleg’s “Hall of Shame”(c) • Jenkins Core • Windows Service Wrapper • Плагины • Remoting
  3. © 2017 CloudBees, Inc. All Rights Reserved. 4 @oleg_nenashev, @jenkins_spb

    üGROOVY INIT SCRIPTS üДЕМО О чём доклад?
  4. © 2017 CloudBees, Inc. All Rights Reserved. 5 @oleg_nenashev, @jenkins_spb

    Configuration as Code в Jenkins Задачи Системные конфигурации
  5. © 2017 CloudBees, Inc. All Rights Reserved. 6 @oleg_nenashev, @jenkins_spb

    Configuration as Code в Jenkins Задачи Системные конфигурации
  6. © 2017 CloudBees, Inc. All Rights Reserved. 7 @oleg_nenashev, @jenkins_spb

    Infrastructure as Code в Jenkins Внешние тулы Jenkins CLI and REST API python- jenkins jenkins-client (java) Configuration Management Ansible, Chef, … Docker, Docker Compose ... Решения внутри проекта Jenkins Groovy Boot Hooks System Config DSL Scriptler Plugin SCM Sync Configuration
  7. © 2017 CloudBees, Inc. All Rights Reserved. 9 @oleg_nenashev, @jenkins_spb

    Groovy Hooks • Где лежат скрипты*? • WEB-INF/HOOK.groovy в jenkins.war • WEB-INF/HOOK.groovy.d/*.groovy в jenkins.war • $JENKINS_HOME/HOOK.groovy • $JENKINS_HOME/HOOK.groovy.d/*.groovy • Для папок – выполнение а алфавином порядке https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Hook+Script *HOOK = [init, boot]
  8. © 2017 CloudBees, Inc. All Rights Reserved. 10 @oleg_nenashev, @jenkins_spb

    Пример https://github.com/oleg-nenashev/demo-jenkins-config-as-code
  9. © 2017 CloudBees, Inc. All Rights Reserved. 11 @oleg_nenashev, @jenkins_spb

    Статическая конфигурация Jenkins • Основа: https://github.com/jenkinsci/docker • plugins.txt Docker • Конфигурация Jenkins • Конфигурация задач Groovy Init Hooks • Jenkinsfile в SCM • Organization Folder Pipeline
  10. © 2017 CloudBees, Inc. All Rights Reserved. 12 @oleg_nenashev, @jenkins_spb

    Пример Intellij IDEA Filesystem SCM Plugin (alpha) • Документация • Отладка Тестовый Jenkins Source Code (local .git repos) • Configuration-as-Code • “Почти как Production” • Репозитории с библиотеками • Jenkinsfile JENKINS_HOME (volume)
  11. © 2017 CloudBees, Inc. All Rights Reserved. 13 @oleg_nenashev, @jenkins_spb

    https://hub.docker.com/r/onenashev/ demo-jenkins-config-as-code/ Демо
  12. © 2017 CloudBees, Inc. All Rights Reserved. 14 @oleg_nenashev, @jenkins_spb

    Чего не хватает • API Jenkins •Не хватает документации •Недостаточно публичных API • Groovy-классы • Обработка ошибок • Отладка в IDE • Миграция/откат конфигов
  13. © 2017 CloudBees, Inc. All Rights Reserved. 16 @oleg_nenashev, @jenkins_spb

    Решаем проблемы • API Jenkins •Не хватает документации •Недостаточно публичных API • Groovy-классы • Обработка ошибок • Отладка в IDE • Миграция/откат конфигов Bootstrap. groovy Запускаем Groovy-движок из… Groovy-скрипта
  14. © 2017 CloudBees, Inc. All Rights Reserved. 17 @oleg_nenashev, @jenkins_spb

    https://github.com/librecores/librecores-ci Демо https://github.com/librecores/librecores-ci/blob/master/ init_scripts/src/main/groovy/GroovyBootstrap.groovy
  15. © 2017 CloudBees, Inc. All Rights Reserved. 18 @oleg_nenashev, @jenkins_spb

    Итого • Отлично работает для статических конфигураций • Не хватает API и документации • Обновление/Откат… L • Обновление – кодом • Откат – только через бэкап (storage)
  16. © 2017 CloudBees, Inc. All Rights Reserved. 19 @oleg_nenashev, @jenkins_spb

    Ссылки • Wiki: •https://wiki.jenkins-ci.org/display/JENKINS/Groovy+Hook+Script • Демо: •https://hub.docker.com/r/onenashev/demo-jenkins-config-as-code/ •https://github.com/oleg-nenashev/demo-jenkins-config-as-code • Advanced-демо: •https://github.com/librecores/librecores-ci
  17. © 2017 CloudBees, Inc. All Rights Reserved. 20 @oleg_nenashev, @jenkins_spb

    Спасибо! Контакты: E-mail: [email protected] GitHub: oleg-nenashev Twitter: @oleg_nenashev