DevOps Pro Moscow 2019

Валентин Титов

Sberbank, Россия

Биография

Валентин Титов — руководитель направления в Sberdata. До прихода в Сбербанк работал в отраслях автоматизации электронного проектирования и телекоммуникаций.

Доклад

Разработка и проверка конвейеров Jenkins

Jenkins – популярный инструмент непрерывной интеграции, который был создан для автоматиции процесса сборки тестирования ПО. Jenkins предлагает большое число расширений через многочисленные плагины.
В прошлом задания Jenkins необходимо было создавать в виде «freestyle jobs», т.е. набора форм графического интерфейса с соответствующими данными, которые преобразуются в файлы настроек в формате XML. Затем появилась возможность создавать конвейерные задания. Такое задание представляет собой сценарий на языке groovy, который по умолчанию имеет название Jenkinsfile, и которое исполняет Jenkins.
В процессе развития ПО такие сценарии могут увеличиваться и усложняться. Это означает, что подобно любому виду программного кода они тоже нуждаются в тестировании. Разработчики Jenkins предлагают использовать для этого библиотеку JenkinsUnit. К сожалению, JenkinsUnit не поддерживает предпочтительного и более мощного стиля написания сценария конвейера: декларативного синтаксиса.
Проект pipelineUnit расширяет JenkinsUnit и дает возможность тестировать код декларативного сценария. Оба этих инструмента не требуют работающего экземпляра JenkinsUnit и, в то же время, дают разработчику сценария богатый инструментарий для быстрого обнаружения и устранения большинства ошибок в сценарии конвейера.
При этом все же остается вероятность не заметить некоторые ошибки, которые могут проявлять себя только в среде реально работающего экземпляра Jenkins. Подобные ошибки могут быть обнаружены, например, при использовании бибилиотек test-harness или acceptance-test-harness, разработанных создателями Jenkins для проверки ядра Jenkins и плагинов. Обе библиотеки используют JUnit4 и предполагают написание тестов на java в проекте maven.
Мы считаем, что для разработчика сценария конвейера требование использовать java является чрезмерным, и для тестирования заданий Jenkins в реальной среде Jenkins предлагаем использовать robotframework.

Ключевые слова

Jenkins