Jenkins World 2016

В этом году вместо нескольких региональных конференций решили провести одну, но большую. Место проведения - то же - Санта-Клара, Калифорния. Конфа суммарно заняла 4 дня, только в 2 из которых были доклады. В другие 2 проходили платные мастер-классы и contributors summit.

Keynotes

За прошедшний год в Jenkins произошло изменений больше, чем когда-либо.

BlueOcean - кодовое имя проекта по обновлению UI. Интерфейс Jenkins’a - больная тема, он не менялся почти 10(!) лет и вот за него наконец взялись всерьёз. Проектом занимается отдельная группа дизайнеров/верстальщиков. Плагин еще в бете, но уже доступен публично в update center. Конечно, там еще не всё реализовано, но пробовать уже можно и нужно. Интерфейс заточен под использованием pipeline’ов.

Pipeline plugin - эволюция workflow плагина. Похоже что именно в него было вложено больше всего сил и времени в последнее время. Это не только универсальный язык описания сборки, но и визуалация процесса в интерфейсе.

Pluggable storages - еще одно долгожданное изменение. 2 года назад на JUC Berlin у нас был занятный разговор с автором Jenkins - Kohsuke Kawaguchi. Мы пытались убедить его, что в большом проекте невозможно жить на файловой системе и хранить всё в xml-файлах. Ужасно долгий стартап и тормоза самого инстанса. И что нужно переходить на использование хранилищ. Тогда он сказал что этого в планах нет и не будет. Спустя 2 года этот вопрос - один из ключевых на Contributors Summit :). Надеюсь в ближайшее время увидеть первые плагины.

Доклады

Rule Jenkins with Configuration as Code. Очередной рассказ про использование Job DSL Plugin. Посмотри, если совсем ничего не знаешь про это.

Blue Ocean: A New User Experience for Jenkins. Подробный рассказ от главного(?) дизайнера проекта BlueOcean о целях, идеях и решениях. Поскольку это станет дефолтным интерфейсом Jenkins’a - стоит посмотреть.

Continuous Testing. Совсем-совсем базовые вещи про тестирование и его место в общем процессе. Если ты хоть чуть-чуть знаком с тестированием, ничего нового не узнаешь.

Using Jenkins for Diverse Feedback on GitHub. Первую половину доклада рассказчик всячески убеждает нас что binary feedback (passed/failed) - это плохо. Во второй половине он рассказывает как они из 1 джобы для пул-реквестов сделал 6. WTF?

Continuous Build and Delivery Pipelines for Android. Рассказ про то, как вызвать gradle-таски из Pipeline’а =).

How to Build Nightly When There is No Night with Electronic Arts. Громкое название, которое собрало полный зал. Доклад ниочём от слова совсем. Получает почётное звание “разочарование 2016”.

Thinking Inside the Container: A Continuous Delivery Story. Интересный опыт контейнеризации jenkins’a. Посмотри, если используешь или собираешься использовать docker в своей инфраструктуре.

Scaling Jenkins with Docker: Swarm, Kubernetes or Mesos?. Сравнительный обзор плагинов для кластеризации Jenkins’a. Есть несколько интересных моментов про особенности работы контейнеров при ограничении ресурсов (память/проц).

So, You Want to Build the World’s Biggest Jenkins Cluster?. Один из ключевых и старейших коммитеров в jenkins core рассказывает о нюансах настройки больших инсталляций Jenkins. С подродными выкладками о результатах тестирования различных конфигураций. И даже с формулой для расчёта оптимального количества памяти для мастера. Круто и интересно, пожалуй, лучший доклад на конфе.

Jenkins Inside Google. Да, в Гугле есть своя CI-система. Тем не менее, они используют Jenkins для сборки некоторых проектов. Стали использовать совсем недавно (в начале этого года). В прошлом году рассказывали, как они тестировали Jenkins на то, потянет ли он их нагрузку. Решили что потянет, пока тянет :). В этом году доклад сплошная вода, а вот прошлогодний был интересным.

Компании и продукты

В этом году продавцов инфраструктуры стало еще больше. Причём большинство даже не парятся о разработке каких-либо киллер-фич. Наклепают красивый интерфейсик или плагин к Jenkins и продают под этим соусом AWS-Azure-или-что-угодно. На эти 2% и живут.

Perfecto Mobile продолжают упираться и пихать всем реальные девайсы для автоматизации. Никаких цифр по-прежнему нет. После долгого спора, они попросили показать им наше приложение в гугл-сторе. Увидев оценку 4,5 для прода, альфы и беты резко осадили :).

RainForest - очередной краудсорсинг тестирования. Отличается от других двумя вещами. 1 - задание для тестировщиков описывается чем-то вроде скрипта. 2 - самим тестировщикам предоставляется необходимое для тестирования окружение - браузеры, мобильные девайсы, всё через удалённый интерфейс. В результате получается что-то среднее между автоматическим и ручным тестированием. Ты вроде как пишешь какой-то код, но выполняется он вручную. Интересно, как это у них полетит.

Undo - запись байт-кода во время прохождения тестов в CI. Если тест упал - можно скачать артефакт себе и дебажить локально или делать это прям в веб-интерфейсе. По записи можно ходить назад-вперёд и наблюдать за состоянием памяти/регистров и т.п. Имхо актуально только для разработчиков embedded C и им подобным. Работает, кстати только для C, но обещают поддержку Java в ближайшем будущем.

Hygieia - читается как “хай-ги-я” (их видимо Thucydides укусил). Опенсорс-проект от IT-ребят из CapitalOne. Дашборд для визуалации CI/CD процессов. Я бегло пробежался по проекту на гитхабе и архитектура выглядит неплохо. Практически всё можно кастомизировать, поэтому если тебе нужно средство визуализации, то стоит посмотреть, прежде чем пилить своё. Проект на гитхабе.

Тренды

Configuration as code продолжает набирать обороты. “Инвестиции” в pipeline plugin - тому самое прямое доказательство. При этом народ потихоньку начинает понимать, что как только что-то (конфигурация) становится кодом, его хорошо бы тестировать. Иначе можно одним коммитом саботировать работу всей команды. Пока что тестирование сводится к набору стандартных проверок (что-то вроде чекстайла), но вангую что скоро начнут появлятся фреймоврки для тестирования конфигураций.

Ещё один интересный тренд - необходимость CI/CD практик уже даже не обсуждается. Это просто must have для выживания в современном мире. Проводились интересные аналогии с компаниями, которые не успели вовремя отреагировать на растущую долю мобильных девайсов и адаптировать свои сервисы. Подобное сейчас происходит и в процессах разработки. Долгий релизный цикл? Много ручных операций в процессе? Нет мониторинга? Не умеешь быстро откатываться из прода? Долго не протянешь :)

Использование облаков/контейнеров как для тестовых сред, так и для динамического расширения самих CI систем стало обычной практикой. Если ты “ещё не” - поторопись изучать и внедрять.

comments powered by Disqus