QA: Conference. Jenkins 2.0 for automation. What's inside? (Rus)
В апреле 2016 вышел в свет Jenkins 2.0 - мажорный релиз одного из наиболее популярных серверов автоматизации. В докладе рассказано об основных изменениях и новых возможностях, которые даёт этот релиз для задач автоматизации тестирования.
плагинов Интеграция с сотнями инструментов Управление процессами автоматизации Автоматизация любых задач Code & Commit Build & Config Scan & Test Release Deploy
Jenkins •75% разработки идёт в open-‐source •Мы помогаем строить enterprise-‐системы на базе Jenkins – CloudBees Jenkins Platform •Горизонтальное масштабирование Jenkins •Фичи для команд: Templates, RBAC •Мониторинг и аналитика •High Availability •Поддержка 24/7 11 О CloudBees
в разработке софта •Continuous Delivery •Continuous Deployment •DevOps •Everything as Code •Централизация систем автоматизации •Коммерческие решения 13 Тренды систем автоматизации
найти документацию? Как найти/выбрать плагин? А этот плагин вообще живой? Как ЭТО настроить? Почему мой фикс не смотрят? Почему UI так неудобен? Как мне ЭТО реализовать?
1 Нода 2 Нода N . . . • Мастер решает большую часть задач • Удалённые задачи ВСЕГДА нагружают мастер • Ввод-‐вывод на мастере Multi-‐ tenancy ??? Gearman CloudBees Jenkins Platform
совместимости • Плагины для Hudson 2 ещё работают! • НО: • Архитектурные проблемы • Старые библиотеки • Устаревший UI, не обновить зависимости • Интеграционные проблемы в плагинах
Блог о Hudson 2.0 Hudson 2.0 is expected to follow in the intrepid footsteps of other major revamps such as Netscape 5 and Perl 6 in its ambitiousness and innovation. Implementation of core in portable C for greater speed and code readability Revamped storage architecture around the Oracle 11g Database to provide more optimal synergy over flat XML files. https://jenkins-‐ci.org/blog/2010/04/01/announcing-‐the-‐hudson-‐2-‐0-‐roadmap/ Perl 6, 2016 Hudson 2.0, ? 19
“Jenkins 2.x” Jenkins 2.0 Апрель 2016 Конец 2016 (?) • Веб-‐сайт • Фокус на UX и инфраструктуре • Минимальные нарушения совместимости • Архитектурные изменения • Доработка UX • Как минимум 1 LTS-‐линейка • 1.651.х – до июля 2016
•Улучшения UX: •Новый мастер установки •Улучшение веб-‐интерфейсов (конфигии пр.) •Категоризация задач •Обновление WebUI-‐библиотек •Security-‐опции включены по-‐умолчанию •CSRF, Slave-‐2-‐master security •Jenkins стартует с Matrix-‐Based Security •Pipeline as Code 23 Jenkins 2.0. Что в ядре? http://bit.ly/jenkins20
из SCM • Синтаксис на базе Groovy • Описания задач можно хранить в SCM • Jenkinsfile – описание задачи в корне репозитория • Шаг git() заменяется на “checkout scm” • http://bit.ly/pipeline-‐tutorial
не нужны связки джобов •Множественные node() в одной задаче •=> + parallel() – запуск тестов на разных машинах тестов на машинах •Множественные scm() в одной задаче •Интерактивные шаги 42 Фичи Pipeline
// Сборка проекта из репозитория // Инициализация прогона в TestRail для QA // Автотесты, деплой на staging-‐сервер // Отправить уведомления ручнымтестировщикам echo ’Automatic tests passed’ hipchatSend('@QATeam The build ' + buildVersion + ' has been staged: ' + stagingURL + '. Please Test it and report back to ' + build.url + '. TestRail run is here: ' + testRailRunURL) // Подождать, пока QA подтвердят релиз input message: 'Have manual spot-‐checks passed? Ready to release?' // Релиз и нотификации mail to: "[email protected]", subject: "Dream Product -‐ build is released", body: "Hi there, The new build of the product has been released. Link:» + artifactoryLink ~~~~~~Много кода~~~~~~ ~~~~~~Много кода~~~~~~
{ checkout scm // Немного магии для получения тэга Docker-‐образа sh 'git rev-‐parse HEAD > GIT_COMMIT' shortCommit = readFile('GIT_COMMIT').take(6) def imageTag = "build${shortCommit}" stage 'Build ircbot' withMavenEnv (["BUILD_NUMBER=${env.BUILD_NUMBER}:${shortCommit}"]) { sh 'make bot' // Make вызывает Maven, который вызывает Ant } stage 'Build container' def whale = docker.build("${imageName}:${imageTag}”) stage 'Deploy container' whale.push() } https://github.com/jenkins-‐infra/ircbot
задачи •В конфигурации –ссылка на репозиторий •Git/GitHub, BitBucket, … •Описание проекта -‐ Jenkinsfile •Для всех веток – ОТДЕЛЬНЫЕзадачи в Jenkins •Сборки при коммитах •Независимые отчеты и Build History •[СКОРО] – Сборка pull-‐request’ов •(+) Multi-‐branch работает на уровне организаций в GitHub и BitBucket 49 Фичи Pipeline. Multibranch
файла •CPS Global library •Входит в состав ядра Pipeline plugin •Создает Git-‐репозиторий в Jenkins •Глобальные функции, классы, переменные, … •Pipeline Remote Loader • https://github.com/jenkinsci/workflow-‐remote-‐loader-‐plugin •Загрузка кода Pipeline из Git/GitHub •Логика плагина написана на Pipeline 52 Фичи. Шаринг кода между задачами
синтаксиса •IntellijIDEA – GDSL •Eclipse DSLD – PoC – почти работает •Контекстная справка по шагам – TODO •Отладчик -‐ TODO 56 Скоро: Интеграция в IDE
частично решает проблемы с UI/UX •… будет развиваться дальше в направлении UX •… содержит новый движок для автоматизации задач (Pipeline-‐as-‐Code) •Pipeline as Code полезен для QA 59 Заключение