Jenkins: удобство и автоматизация рутины

05:00, 19 June 2020

жедневно в нашей компании пишутся километры кода, создаются новые программы, приложения и дополнения. Ведь бизнес нуждается в программном обеспечении, которое развивается вместе с ним, а ПО в свою очередь требует постоянного улучшения.

Представьте, каких трудов стоит нашим разработчикам уследить за всем этим!

Хорошо, что прогресс позволяет внедрять современные решения, чтобы автоматизировать и усовершенствовать процессы, связанные с созданием ПО. Одно из таких решений — Jenkins. Его применяют в нашей компании с 2010 года.

Jenkins — программная система с открытым исходным кодом на Java, предназначенная для обеспечения процесса непрерывной интеграции программного обеспечения.

Система позволяет автоматизировать часть процесса разработки ПО без участия человека.

Под непрерывной интеграцией понимается процесс разработки программного обеспечения, смысл которого заключается в постоянном добавлении новых возможностей (функционала, фич) непосредственно в сам проект как можно быстрее, до нескольких раз в день. А также в выполнении постоянных автоматизированных сборок проекта и его тестирования для быстрого выявления возможных ошибок и решения проблем.

Jenkins логично использовать там, где есть необходимость в автоматическом развёртывании* приложений, а также в удобном управлении различного рода задачами.

За автоматизацию и усовершенствование процессов, связанных с разработкой ПО, в нашей компании отвечают релиз-инженеры. Их работа связана с компиляцией, сборкой и доставкой исходного кода в готовые продукты или в другие программные компоненты. Специалист создаёт сценарии, которые позволяют программу, написанную разработчиком, заставить работать на сервере.

Проектом Jenkins занимаются релиз-инженеры отдела поддержки платформы Windows и баз данных Максим Трунов и Денис Еньшин.

— Чем это полезно? Прежде всего тем, что программист не тратит время на сборку и доставку кода на сервер. Ему не нужен доступ к продакшн-серверу, не нужно что-то настраивать, вспоминать. Он просто пишет код, помещает изменения в репозитории, а дальше уже Jenkins собирает проект, запускает тесты, публикует их результаты и доставляет готовое ПО «в продакшн». То есть, разработчик имеет под рукой довольно удобный и предсказуемый инструмент. — рассказывает Максим Трунов.

Все необходимые действия с ПО выполняются системой Jenkins по команде пользователя. Она запускает готовый сценарий, например:

  • обновления и очистка кэша
  • запуск ПО по расписанию
  • обновление самого ПО (это самая частая операция!)
  • подготовка сервиса к выключению\включению
  • управление триггерами Zabbix

Jenkins: удобство и автоматизация рутины, изображение №2

Сценарий действий пишется лишь раз и потом многократно используется, достаточно нажатия пары клавиш. Это гораздо быстрее и удобнее, чем каждый раз выполнять процесс вручную.

— Jenkins фактически был лучшим бесплатным решением на момент внедрения, аналоги вышли позже. Конечно, у него были и есть недостатки, но сейчас проект активно дорабатывают, ориентируясь на новые веяния.
Начинали внедрение Jenkins с HelpDesk и сайта taximaxim.ru еще до моего появления в компании. На данный момент интегрируются практически все наши продукты: клиентский и водительский сервисы, все сайты, программный комплекс AIST, MBroker и прочие. Что до сих пор "делается руками"? Приложения для iPhone, работа с PlayMarket. Но это не потому, что Jenkins здесь неприменим, просто пока до этого не добрались, но планируем!— говорит Максим.

Инструментом автоматизации Jenkins пользуются все отделы разработки, а также отделы системного и сетевого администрирования.

________________

*Развёртывание — это набор действий, которые делают программный продукт готовым к использованию: компиляция, установка, активация, обновление, исправление ошибок и другие.