Визуализация связей в Jenkins Job
Участники проекта
Руководитель
Собеседование
В начале семестра я выбрал самый интересный для меня проект, совмещающий программирование на Python и визуализацию данных, и отправился на собеседование. Оно проходило в свободной обстановке — Марк рассказывал, в чем заключается суть проекта и почему он будет мне интересен, а я описывал свой предыдущий опыт программирования и почему мне так нравится этот проект. После собеседования мне сообщили, что руководитель согласен со мной работать, и я сразу приступил к делу.
О проекте
Основная цель проекта — реализовать инструмент для визуализации и статического анализа Jenkins конфигов. Визуализация поможет лучше понимать структуру Jenkins проекта, взглянуть на него «с высоты птичьего полета», не разбираясь подробно с каждым конфигом. Статический анализ позволит не тестировать проект в бою, а находить распространенные ошибки на стадии разработки. Типичный проект на Jenkins может выглядеть так. Каждая вершина графа — отдельный конфиг файл и отдельный процесс. Ребро между двумя процессами означает, что один вызывает другой. Видно, что есть главный процесс — build, который вызывает cleanup, который в свою очередь вызывает destroy и так далее. Без нашего инструмента, чтобы понять всю топологию вызовов, пришлось бы читать каждый конфиг.
Кроме того, вызывать процессы можно с различными параметрами. Визуализация и в этом случае позволяет компактно отобразить интересующие нас подробности.
Статистически анализировать можно многие ошибки. Самая простая из них — файл, который не используется ни одним процессом.
Поскольку пользоваться инструментов из терминала не всегда удобно, мной так же был реализован браузерный интерфейс, который позволяет в несколько нажатий визуализировать или проанализировать Jenkins конфиги.
О процессе работы
Поскольку путь до CS центра занимает долгое время, Марк любезно позволил проводить еженедельные встречи через Zoom (аналог скайпа). На них мы обсуждали мой текущий прогресс по проекту, какие возникли трудности и как их решать, какие у меня есть идеи по поводу дальнейшего развития проекта, и что хотелось бы реализовать к следующей встрече. На работу над проектом у меня уходило примерно
10-12 часов в неделю.
Заключение
Мы с Марком остались довольными результатами этой практики. Проект был реализован, и он ем даже удалось рассказать на международной конференции FRUCT 2017 в ЛЭТИ, посвященной разработке ПО. Я получил большое удовольствие от работы над проектом. Эта практика позволила мне как углубить свои знания Python и применить их в работе над реальным проектом, так и дала возможность попробовать новые инструменты визуализации данных, такие как GraphViz.