Эта статья была спонсирована CloudBees . Спасибо за поддержку спонсоров, которые делают возможным SitePoint!
Jenkins — отличный инструмент для непрерывной интеграции и непрерывной доставки. В предыдущих статьях мы узнали, как настроить Jenkins для обеспечения качества, и рассмотрели один особенно полезный плагин для надстройки ваших процессов . В этой статье мы расскажем вам о семи способах эффективного использования Jenkins.
Эта статья основана на презентации, сделанной участником Jenkins Эндрю Байером на конференции пользователей Jenkins 2014 года, и адаптирована здесь с разрешения.
1. Убедитесь, что Дженкинс стабилен и работает правильно
Дженкинс часто выпускает новые версии. Рекомендуется всегда использовать последнюю версию Долгосрочной поддержки (LTS) и избегать промежуточных обновлений. Релиз LTS протестирован проектом Jenkins.
То же самое правило применяется и к плагинам. У них нет релизов LTS, но может произойти много обновлений. В общем, вы должны придерживаться правила: если оно работает, не обновляйте его. Новые обновления могут сделать функции нестабильными. Кроме того, любой данный плагин может вести себя не так, как ожидалось.
Также убедитесь, что вы создаете резервные копии вашего сервера Jenkins. Вы можете создать резервную копию всех данных, но это будет стоить вам много времени и ресурсов. Вместо этого вы можете решить создавать резервные копии файлов конфигурации только с помощью таких сценариев.
2. Не заполняйте Дженкинс наворотом
Есть несколько простых вещей, которые вы можете сделать, чтобы не стать владельцем раздутой установки Jenkins:
-
Если у вас много команд или проектов, вы можете создать несколько мастеров Jenkins. Например, вы можете создать мастер для проектов PHP и отдельный для проектов Android. Это позволит гарантировать, что изменения не затронут все проекты и что у вас есть только плагины, необходимые для конкретного мастера для каждого проекта.
-
Разбейте свою работу на несколько небольших работ. Нет ничего более раздражающего, чем длинная сборка, терпящая неудачу где-то в конце. Если вы разбиваете свои работы на более мелкие, вы можете легко перезапустить одну, если она потерпит неудачу. Плагин Workflow полезен для этой цели. Если вы заинтересованы в более подробном объяснении плагина Workflow, посмотрите наш недавний обзор продукта .
3. Автоматизировать Дженкинс
Jenkins поставляется с интегрированной консолью скриптов, позволяющей выполнять команды на сервере. Это удобный инструмент для отладки Jenkins или для поиска необходимой информации.
Интересным плагином является плагин Scriptler . С помощью этого плагина вы можете сохранить ваши любимые скрипты для последующего использования. Вы также можете найти онлайн-каталог скриптов здесь с предопределенными скриптами, такими как очистка очереди заданий .
Для каждой сборки вы также можете написать свои собственные шаги сборки на языке Groovy . Это дает вам больше гибкости в работе, но также означает, что вам нужно быть более осторожным, потому что это дает вам больше контроля. Вы также можете запускать сценарии из каталога Scriptler как этап сборки.
Если у вас много проектов, рассмотрите возможность создания рабочих мест автоматически. Jenkins поставляется с отличным REST API и инструментом CLI для создания новых рабочих мест. Вы также можете погрузиться в плагины, такие как Workflow, которые мы недавно обсуждали, для автоматизации определенных частей процесса, или плагин Cloudbees Templates, который позволяет вам легко создавать задания из предопределенного каркаса заданий.
4. Внимательно рассмотрите ваши плагины
Дженкинс имеет богатую коллекцию плагинов; легко потеряться в огромном количестве доступных. Важно решить, нужен ли вам данный плагин. Плагины могут нарушить функциональность в Jenkins в местах, которые вы можете не ожидать. Они также могут замедлить вашу работу по сборке. Убедитесь, что вы выбрали правильный плагин для правильной работы. Не устанавливайте их, если они вам действительно не нужны.
Следите за своим списком плагинов и удалите все плагины, которые больше не используются. Это поможет поддерживать Дженкинс в хорошей форме и без вздутия.
Также помните, что некоторые плагины поставляются с глобальными настройками конфигурации. Не забудьте проверить глобальную конфигурацию после установки плагина, так как настройки по умолчанию могут не соответствовать вашим требованиям и могут привести к неожиданному поведению.
5. Интеграция с другими инструментами
Jenkins предлагает REST API, который вы можете использовать для интеграции Jenkins с другими инструментами. Возможно, одна из лучших интеграций — с контролем исходного кода. Например, вы можете легко комбинировать Jenkins с Github или Gitlab . Каждый раз, когда разработчик создает запрос на получение доступа к вашему исходному коду, Jenkins может запускаться для проверки запроса на наличие ошибок. Таким образом, вы можете быть уверены, что принимаете только те пул-запросы, которые соответствуют вашим стандартам.
Вы также можете интегрировать Jenkins с инструментом проверки кода, таким как Gerrit . При просмотре кода в Gerrit вы получите дополнительную информацию от Jenkins. Вы можете проверить, все ли сделано так, как вам хотелось бы, и автоматически объединить код в несколько веток.
Другой подход заключается в интеграции Jenkins с системами отслеживания ошибок, такими как Jira и Redmine . Jenkins может публиковать обновления для проблем в этих инструментах отслеживания ошибок при создании исправления для разработчика, обеспечивая более высокий уровень видимости для всей команды и уведомляя других членов команды (например, менеджеров проектов или тестировщиков QA), когда проблема устранена. С другой стороны, вы также можете автоматически генерировать журнал изменений на основе всех зарегистрированных проблем в конкретной сборке.
Конечно, возможны дополнительные интеграции. Например, вы можете легко развернуть свое приложение в каждой сборке. Что бы вы ни решили, хорошая автоматизированная интеграция позволит вам работать над другими вещами, а не выполнять обычные задачи вручную.
6. Настройте правильных рабов
Убедитесь, что у вас есть простые в управлении рабы. Если вы убедитесь, что можете заменить их или добавить новые без хлопот, ваша жизнь станет намного проще. В случае сбоя ведомого устройства убедитесь, что для его запуска и запуска требуется всего несколько щелчков мыши.
Вы можете добиться этого, либо подготовив виртуальные образы, которые вы можете использовать для установки, либо вы можете управлять своей полной конфигурацией через Puppet ( модуль ) или Chef ( рецепт ).
Вы также можете сделать рабов более общими. Это означает, что вы можете запускать несколько различных заданий на одном подчиненном устройстве, делая подчиненное устройство более универсальным. Тем не менее, вы не должны делать своего раба слишком сложным, как отмечено выше.
Поместив рабов в облако, вы можете автоматически активировать их с помощью контейнера, например Docker . Таким образом, вы не тратите впустую никаких ресурсов и можете автоматически масштабироваться, когда требуется больше рабов.
7. Дженкинс сообщество
Последний совет для повышения эффективности использования Jenkins — это использование сообщества Jenkins. Вы должны участвовать в жизни сообщества. Участие в написании и публикации плагинов или сообщении о проблемах поможет улучшить Jenkins и улучшит ваш опыт работы с Jenkins. Кроме того, ознакомьтесь с субреддитом Jenkins, подпишитесь на список рассылки , войдите в IRC для участия в двухнедельном собрании проекта Jenkins или в чате в любое время между встречами проекта или подпишитесь на рассылку новостей .
Вывод
Благодаря техническому обслуживанию и некоторой заточке каждый хороший инструмент может стать великолепным. Дженкинс ничем не отличается. Из коробки Jenkins — отличный инструмент для непрерывной интеграции и непрерывных процессов доставки. Но если вы выбираете более стабильные версии LTS, избегаете вздутия, тратите немного времени на автоматизацию, выбираете правильные плагины и правильные интеграции и участвуете в сообществе, ваши процессы Jenkins действительно начнут блестеть. И если ваш инструмент непрерывной интеграции и доставки усердно работает для вас, ваша разработка программного обеспечения будет перегружена.
Что вы собираетесь делать по-другому после прочтения этой статьи? У вас есть еще советы, как убедиться, что Дженкинс работает без сбоев?