Необходимость беспрепятственного сотрудничества приблизилась к наилучшими возможными инструментами оркестрации вокруг, в частности, инструменты непрерывной интеграции (CI) и непрерывной доставки (CD). Среди всех соревнований Дженкинс появился с единогласным популярным голосованием! На самом деле, настолько популярно, что это инструмент автоматизации GO-DEVOPS для многих команд разработки программного обеспечения.
Если вы хотите получить хорошие результаты от этого популярного инструмента DevOps, вам нужно следовать наилучшими практиками. С учетом того, что мы хотим поделиться некоторыми из лучших практик Дженкинса.
Давайте начнем.
1. Держите Дженкинс в безопасности во все времена
Почему это важно?
Jenkins не выполняет никаких проверку безопасности в конфигурации по умолчанию. Это подразумевает, что любой пользователь, доступа к сайту, может выполнять любой случайный код на Master Jenkins, кроме просто настраивающих Jenkins, заданий и сборки. Он также позволяет выполнение любого произвольного кода на всех подключенных агентах, включая ваши пароли, сертификаты и другие частные/зарезервированные данные. Как идут лучшие практики Jenkins CI/CD, рекомендуется защищать Jenkins и настроить опцию «Настроить глобальную безопасность».
Как поставить его на практику?
1. Контроль доступа:
Это первичное действие поставляется с двумя конфигурациями границ для защиты Jenkins против авторизованного использования.
- Безопасность REALM: обычно известный как «аутентификация», она информирует о среде Дженкинса, как и куда привлечь информацию о пользователе.
- Авторизация: информирует среду Дженкинса по отношению к которым пользователи и/или группы могут получить доступ к тому, какие аспекты Дженкинса и в какой степени.
. Безопасность царство
- Jenkins Собственная пользовательская база данных: Простейшая схема аутентификации
Начиная с Jenkins V2.214 и Jenkins LTS V2.222.1 ‘Jenkins Собственная пользовательская база данных пользователя используется в качестве опции realm Security Realm.
Для версий перед Дженкинсом 2.214 и Дженкинс Л.Т. 2.222.1, Включить безопасность Флажок должен быть проверен, чтобы пользователи войти в систему во вход с их учетными данными и избежать любого интерпаса.
- Лишать
Эта функция более распространена для больших установок в организациях с внешним провайдером идентичности, такими как LDAP. Более вероятно, что ваш экземпляр Дженкинса может не установлен LDAP уже установлен. Чтобы включить это, установите плагин LDAP. Это делегает всю аутентификацию на настроенный сервер LDAP, включая как пользователей, так и групп.
б. Авторизация
- Любой может сделать что-нибудь
Избегайте использования этого параметра Для чего-либо, кроме локальных тестирующих контроллеров Jenkins. Почему? Потому что, как следует из названия, каждый получает полный контроль за Дженкинс, включая анонимных пользователей.
- Устаревший режим
Согласно лучшим практикам Дженкинса выше, Не используйте этот параметр Отказ Только пользователи, имеющие роль «администратора», будут предоставлены полный контроль над системой; В противном случае они будут только для чтения доступа.
- Зарегистрированные пользователи могут сделать все
Этот режим заставляет каждого пользователя войти в систему перед использованием Jenkins. После настроек расширенных параметров анонимные пользователи получают только чтение доступа к Jenkins или без доступа вообще. Это обеспечивает аудиторскую тропу действий пользователей.
- Материксная безопасность
Эта схема авторизации контролирует, какие пользователи и группы могут выполнять какие действия в среде Jenkins.
- Стратегия авторизации Matrix на основе проекта
‘ Стратегия авторизации на основе матрицы «Безопасность и» на основе проекта «Стратегия авторизации на основе проекта» предоставляются «плагином стратегии авторизации Matrix» и требуют отдельной установки на ваших женкинах.
Эта схема авторизации является расширением безопасности на основе матрицы, которая позволяет определять дополнительные списки контроля доступа (ACL) для каждого проекта отдельно на экране конфигурации проекта. Это позволяет конкретным пользователям или группам доступа к указанным проектам.
Matrix на основе Matrix Security обеспечивает максимальную безопасность и гибкость для многих средов Jenkins; Следовательно, он рекомендуется для производственных сред.
2. Защита пользователей Jenkins от других угроз:
Эти функции по умолчанию выключены, и мы должны действовать над ними по мере необходимости. Это делает важной частью лучших практик Jenkins CI/CD.
- Запрос на сайт Запрос подделки (CSRF) Защита: предотвратить удаленную атаку против Jenkins, бегущих внутри вашего брандмауэра. Защита CSRF была включена по умолчанию для версий с 2.0. По умолчанию эта функция находится в Jenkins 1.x и при обновлении до 2.x.
Путь для настроек CSRF: управлять Jenkins> Настройка глобальной безопасности> Раздел: защита CSRF. https://www.jenkins.io/doc/book/managing/security/#cross-site-request-forgery
- Соглашение о безопасности, которые запускаются на Master: сборки, работающие на главном узле, могут прочитать или изменять файлы в jenkins_home, и это может повлиять на всю установку Jenkins, таких как чтение учетных данных, создание трубопроводов, задания, установка плагинов и т. Д.
Как правило, настройте мастер, чтобы не иметь исполнителей и запустить сборки только на строительных агентах, где люди, которые администрируют Дженкинс, отличаются от людей, которые настраивают рабочие места или фиксируют проекты. Альтернативно, используйте плагин ограничения заданий для фильтрации, какие задания могут работать на главном узле.
2. Всегда Резервное копирование каталога «jenkins_home»
Почему это важно?
Home Directory Jenkins содержит множество данных, включая конфигурации работы, журналы сборки, конфиги плагинов и т. Д., Что мы не можем позволить себе проиграть. Это может быть достигнуто через плагины, предлагаемые Jenkins или настроить задание, чтобы сделать резервную копию. Иглы, чтобы сказать, это один из самых важных лучших практик Jenkins.
Как поставить его на практику?
1. Резервный плагин: Использование этого плагина не рекомендуется так, как,
- Это требует от вас вручную начать его создать создание ваших данных.
- Дженкинс остановил какие-либо улучшения над ним, и есть другие лучшие альтернативы, доступные над этим.
2. Тонкий резервный плагин: Один из самых суровых плагинов всех, кто предлагает автоматизированные периодические резервные копии.
- Установите плагин через управление Jenkins -> Управление плагинами -> нажмите «Доступно» вкладка -> Поиск «тонкой резервной копии».
- После установки перейдите к управлению Jenkins -> Thisbackup -> Настройки.
- Параметры конфигурации для плагина являются самоочередными и для любой двусмысленности «?» Рядом с каждой обстановкой это благо!
- Нажмите «Резервное копирование сейчас», чтобы проверить резервное копирование.
3. Периодический резервный плагин: Это альтернатива существующему «резервному плагину», которое будет работать периодически после настроили.
Плагин определяет три точки расширения:
- Файл-менеджер: определяет, какие файлы должны быть включены в резервную копию и восстановленную политику файлов. Например.: Configonly — выберуте только файлы Configuration XML.
- Место хранения: Определяет метод архивации и неархив резервных копий. E.G., «Zipstorage» будет сжать файлы резервных копий в ZIP-архив.
- Расположение: Указывает локализацию резервных копий. E.G., «LocalDirectory» — сохранит файлы резервных копий в указанном пути.
Обратитесь https://plugins.jenkins.io/periodicbackup/ для достижения этой цели.
4. Настройте регулярную работу резервного копирования
- Выберите «Freestyle Project», создавая новую работу Jenkins.
- Отметьте «Нет» для SCM.
- Выберите «Создать периодически» в строге триггеров и настройте частоту в расписании. Например. Давая H 12 * * * ‘, сделает резервную копию каждый день в 12.25.30 GMT
- Добавьте Secele Execute Shell State, используя этот файл в качестве команды и создайте задание.
5. Резервное копирование конфигурации Jenkins в Google Cloud Storage
- Это лучше всего использовать, если у вас есть конфигурация Jenkins Server, развернутая на кластере Kubernetes в Google Cloud. Используйте «тонкий плагин резервного копирования» (как описано выше) с плагином Google Cloud Storage (установка) для подключения к облаку. Эта статья Предоставляет иллюстративный подход к достижению этого.
Из всех лучших практик Дженкинса лучше всего использовать тонкий плагин в сочетании с созданием трубопровода, настроив задание. Иначе, если у вас есть ваш сервер, развернутый над облачной точки «E» (выше), является рекомендуемым подходом.
3. Настройка другая работа/проект Для каждого ветвей обслуживания или развития Созданный
Одним из преимуществ эксплуатации инструментов непрерывной интеграции является обнаружение проблем на ранней стадии в жизненном цикле развития. Дженкинс предлагает построить части вашего трубопровода параллельно, и эта критическая практика для успешной реализации трубопровода Дженкинса. Это также одна из важных практик, рекомендованных лучших практик, рекомендованных и снова.
Почему это важно?
Настройка различных рабочих мест/проектов для каждой филиалы помогает вам поддержать усилия по параллельному развитию и максимизировать преимущество вытекающих проблем, тем самым снижая риск и позволяя разработчикам быть более продуктивным.
Как поставить его на практику?
Последние Плагин Parallel Test Plugin помогает нам выполнять тесты параллельно.
4. Предотвратить столкновения ресурсов На рабочих местах Которые работают параллельно
Почему это важно?
Выполняя этап 4, несколько рабочих мест, работающих одновременно, могут вызывать столкновения, если они создают службу или нуждаются в эксклюзивном доступе, что может потечить ваш трубопровод Jenkins. Принимая это как один из лучших практик Дженкинса, настоятельно рекомендуется профессионалами DevOps.
Как поставить его на практику?
Выделение различных портов для параллельных проектов сборки позволяет избежать построения столкновений. Если постоянный ресурс должен быть заблокирован, например, база данных, Дроссель одновременно создает плагин , является идеальным примером.
Слово дроссель означает регулировать/настроить/контролировать. Плагин позволяет регулировать количество одновременных сборки проекта, работающего на узел или через глобальную конфигурацию.
Чтобы установить неограниченное значение одновременных сборки, используйте 0.
5. Используйте «файл отпечатков пальцев» для управления зависимостями
Почему это важно?
Создание взаимозависимых проектов на Jenkins часто создает путаницу, отслеживая какую версию ее используемую и с помощью которой ее версия. » Файл отпечатков пальцев, «Поддерживается Дженкинс, упрощает это, так что сделайте лучшее использование этого.
Как поставить его на практику?
Все соответствующие проекты должны быть настроены на запись отпечатков пальцев JAR-файлов, то есть, просто запишите все отпечатки пальцев следующего:
- JAR файлы, которые ваш проект производит
- Барные файлы, которые ваш проект опирается на
И настроить работу для записи отпечатков пальцев, перейдите к вашему проекту 🡪 Настройка 🡪 Post Build Actions🡪 Запишите отпечатки пальцев.
https://wiki.jenkins.io/display/JENKINS//Fingerprint
6. Избегайте осложненного COROVY CODESODE в трубопроводах
Почему это важно?
Для трубопровода Дженкинса, Groovy Code всегда выполняет на мастере, связанном с огромным использованием основных ресурсов (память и ЦП). Следовательно, становится критически важно, чтобы сократить количество кода Groovy, выполненного трубопроводами. Последующие решения являются наиболее распространенными методами Groovy, которые можно избежать, ведущие к лучшим практикам Дженкинса.
Как поставить его на практику?
1. Jsonslurper: Эта функция (и несколько других подобных, таких как xmlslurber или readfile), можно использовать для чтения из файла на диске, анализируйте данные из этого файла в объект JSON, и введите этот объект в трубопровод с помощью команды, такой как jsonslurper () .paretex (readfile («$ local_file»)).
Эта команда загружает локальный файл в память в Master дважды и, если, например, файл очень большой, или команда выполняется постоянно, она потребует много памяти.
Решение: вместо того, чтобы использовать jsonslurper, используйте Шаг раковины и вернуть стандарт. Эта оболочка будет выглядеть что-то подобное: Def Metal: «, ReturnStdout: True, Script:« Echo »$ local_file» | jq «$ parsing_query». Это будет использовать агентские ресурсы для чтения файла, а $ PARSING_QUERY поможет анализировать файл в меньший размер.
2.httprequest: Часто эта команда используется для получения данных от внешнего источника и хранить его в переменной. Эта практика не идеальна, потому что:
- В этом случае запрос приходит непосредственно от мастера, который может привести к непоследовательным результатам для таких вещей, как HTTPS-запросы — если у Мастера нет загруженных сертификатов.
- Кроме того, ответ на этот запрос хранится дважды, создавая тем самым избыточность.
Решение: Используйте шаг оболочки для выполнения HTTP-запроса агента, например, используя инструмент, похожий на Curl или WGET, в зависимости от ситуации. Если результат должен быть позже в трубопроводе Jenkins, результат должен быть отфильтрован на стороне агента максимально возможен, чтобы только минимальную необходимую информацию можно было перенести в Master Jenkins.
7. Построить масштабируемый трубопровод Jenkins
Возможно, мы живем в удаленной эпоху; С каждой адаптацией инструментов CI/CD наш список лучших практик Jenkins получается дольше. Достижение масштабируемого Дженкинс Трубопровод Это одно из таких фирм благоувященных фирм, чтобы достичь использования нескольких инструментов. Здесь мы описываем лучшие инструменты, которые вы должны использовать для создания трубопровода для вашей организации, которая масштабируется, не жертвуя нашей юзабилити.
Почему это важно?
Общие библиотеки Пожалуй, единственным наиболее разговариваемым инструментом, чтобы всплыть на предприятиях и является вершиной приложения сухих принципов (не повторяйте себя), чтобы декопс. Общие библиотеки предлагают код трубопровода, контролируемого версиями, который можно хранить и доступ к управлению исходным управлением (SCM) по сравнению с общей библиотекой программирования.
Как поставить его на практику?
Вам нужен исходный файл с последовательной структурой, хранящейся в вашем SCM, а затем использовать плагин SCM для подключения библиотеки к экземпляру Jenkins и:
- Либо включить глобальные общие библиотеки в разделе «Управление Jenkins» -> «Настройка системы» -> «Глобальные библиотеки трубопроводов» или
- На уровне папки через управление этой конкретной папкой.
- «@Library», используя имя библиотеки в jenkinsfile, позволит конвейере доступа к этой общей библиотеке.
После того, как вы построили свои первые основные общие библиотеки, обязательно посмотрите на лучшие практики сообщества Jenkins Community, чтобы обеспечить то, что вы строите, будет хорошо в будущем.
8. Управление декларативными синтаксисами/декларативными трубопроводами
Это последний, но жизненно важный кусок головоломки, когда речь идет о внедрении на уровне корпоративных на уровне корпоративных, трубопроводов и лучших практик Дженкинса. Это огромный шаг к доступу к доступности совместной практики предприятия для всех, кто хочет воспользоваться трубопроводами.
Декларативная конфигурация трубопроводов рассказывает систему, что делать, сдвигая сложность «Как сделать» систему.
Трубопроводы, пожалуй, самые простые инструмент, чтобы начать работу в Дженкинс и доступны путем создания нового трубопровода «Пункт» в Blue Ocean или Classic Jenkins ui, или, написав jenkinsfile и совершив его в ваш проект SCM. Вы можете обратиться к Общие декларативные шаги Чтобы создать мероприятие Greenfield или использовать Генератор фрагментов Для преобразования существующих шагов сборки в синтаксис трубопровода.
Кроме того, сообщество предлагает отличное Начало работы с трубопроводом Руководство, а также Как примеры трубопровода Если вы ищете вдохновение.
9. Поддерживать более высокий тестовый код охвата и тесты запуска, как часть вашего трубопровода
Почему это важно?
Поддержание 90% покрытия кода обеспечивает лучшую ROI путем сокращения дефектов UAT и продукта. Хотя более высокий охват не гарантирует качество кода, Номера охвата кода наплечний на планке помогают обеспечить профилактику ваших разработчиков и QA на ранней стадии жизненного цикла.
Как поставить его на практику?
- Jenkins Cobertura Plugin позволяет вам захватить код покрытия кода от Cobertura.
Шаги для настройки плагина Cobertura-
- Установите плагин Cobertura (через управление Jenkins -> Управление плагинами).
- Настройте скрипт сборки вашего проекта для создания отчетов Cobertura XML.
- Включите «Опубликовать отчет о покрытии Cobertura».
- Укажите каталог, где генерируется отчет Coverage.xml.
- (Необязательно) Настройте метрические цели покрытия, чтобы отразить ваши цели.
Конфигурация для единого проекта/иерархии проекта/Maven подробно здесь Отказ
- Плагин API Code Coverage — это Unified Plugin API, который поддерживает другие плагины, такие как Cobertura, и делает большую часть повторной работы для этих плагинов.
Этот плагин API в основном выполнит:
- Поиск отчетов о покрытии в соответствии с конфигурациями пользователей.
- Используйте адаптеры для преобразования отчетов в стандартный формат.
- Совокупный анализируемый стандартный формат отчетов и демонстрирует анализируемые результаты в диаграмме.
Таким образом, реализация кода покрытие просто полагается на написание адаптера, который будет выполнять только одно — преобразование отчета о покрытии в стандартный формат.
- Лямбдатест Selenium Great Cloud Предлагает вам широкую библиотеку 2000+ браузеров и версий браузера, поэтому вы можете добиться более высокого тестового покрытия при выполнении тестирования автоматизации с помощью тестового набора SELENIUM.
Установив плагин Lambdatest Jenkins, автоматизируя сценарии автоматизации тестирования Selenium, подключив экземпляр Jenkins CI к LAMBDATEST GRID, будет так же просто, как пирог.
Zambdatest jenkins plugin поможет вам:
- Настройте свои учетные данные Lambdatest для вашей работы Jenkins.
- Настройте лямбда-туннель и отрывьте двоичный файл, чтобы начать работу с автоматическим тестированием кросс-браузера в ваших локальных установленных веб-приложениях.
- Вставьте все результаты теста, включая видеовеловые журналы, сетевые журналы и скриншоты шагов, выполняемых через лямбдатест с вашими результатами работы Jenkins.
Подробная пошаговая процедура сформулирована в этой поддержке Док для интеграции Дженкинса .
10. Контролировать ваш CI/CD-трубопровод
Почему это важно?
Наличие сломанного CI/CD-конвейера может потенциально остановить вашу команду разработки. Кроме того, внешние зависимости, такие как облачные службы, сеть, службы тестирования, могут повлиять на ваш CI/CD-трубопровод, и вам нужно знать, когда эти случайные сбои становятся достаточно значительными, чтобы гарантировать действие.
Как поставить его на практику?
Вот a плагин Это подчеркивает общее здравоохранение на протяжении всего цикла развития — используйте его.
Плагин Jenkins Slack отправляет уведомления об ошибках к каналам, контролируемыми инженерами Call.
Используйте это плагин для мониторинга здоровья нашей работы со временем. Это позволяет нам распознавать потенциальные области сборки, которые могут потребовать улучшения. Он предлагает нам построить приборные панели, такие как скорость пропускания сборки, среднее время сборки, а количество определенных страховых ошибок своевременно выявлена наращивание неэффективности.
Удаление!
На мой взгляд, лучшие практики Jenkins, которые вы можете использовать на любом этапе развития, будут позволить Jenkins запускать свою собственную пользовательскую базу данных и выполнять контроль доступа на основе Matrix разрешений/пользователей. Поощряйте прикладные команды на модернизацию на шаг раковины, чтобы избежать сложных сценариев Groovy и возьмите собственность общих библиотек и JenkinsFiles.
Следите за трубопроводом, используя плагин Autostatus и всегда определяю декларативный трубопровод. Резервное копирование должно быть важной активностью, настроенной для запуска автоматически! Наконец, надежный продукт или программное обеспечение всегда является побочным выбором Brilliant Code Coverage Tests. Это должно быть важной частью вашей стратегии трубопровода Дженкинса. Можно также сказать, что это один из рекомендованных лучших практик Jenkins CI/CD.
Убедитесь, что интегрировать API покрытия кода вместе с Лямбдатест Селенская сетка для доставки без дефектов! Счастливое тестирование!
Оригинал: «https://dev.to/kritika_murari/are-you-following-these-jenkins-best-practices-2cn5»