Хостинг SpaceWeb
Серверы Дизайн Сайты Безопасность Домены PHP Кейсы клиентов

Jenkins для начинающих: что это, зачем нужен и как его установить

Когда проект обрастает десятками задач, тестов и релизов, становится очень сложно поддерживать его вручную. Нужно что-то, что возьмет рутину на себя: проверит код, соберет приложение, прогонит тесты и развернет результат на сервере. Именно для этого и используют Jenkins — инструмент, который экономит время и снижает количество ошибок в процессе разработки.

Первым делом — основы

Прежде чем разбираться с Jenkins, стоит понять идею, на которой он держится. Речь о CI/CD — подходе, который сделал процесс разработки быстрее и предсказуемее.

CI (Continuous Integration) — непрерывная интеграция. Этот процесс подразумевает, что изменения в коде регулярно добавляются в общий репозиторий. Каждое новое обновление автоматически проверяется: система собирает проект и запускает тесты, чтобы убедиться, что новые части кода не нарушают работу всего приложения.

CD (Continuous Delivery) — непрерывная доставка. На этом этапе собранное и проверенное приложение автоматически передается в тестовую или рабочую среду. Это позволяет быстрее выпускать обновления, а команде разработки — быстрее получать обратную связь.

CI и CD объединяются в единый конвейер, где все шаги выполняются последовательно. Как правило, он включает:

Что такое Jenkins

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

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

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

История Jenkins

Jenkins появился в 2004 году. Его автор — разработчик Косукэ Кавагути, который тогда работал в Sun Microsystems. Он создал инструмент для автоматизации сборок и назвал его Hudson. Идея быстро получила отклик: многие команды начали использовать Hudson, чтобы упростить работу с кодом и избавиться от рутинных операций.

К 2010 году вокруг Hudson сформировалось большое сообщество. Однако в 2011 году произошел конфликт между Oracle (которая унаследовала Sun) и участниками сообщества. Вопрос касался прав на управление проектом и торговой марки. В результате разработчики проголосовали за независимое развитие инструмента и дали ему новое имя — Jenkins.

С этого момента Jenkins стал отдельным проектом с открытым исходным кодом. Его развитие взяли на себя сообщество и организация Continuous Delivery Foundation (CDF).

Кто и где использует Jenkins

Jenkins стал одним из самых распространенных инструментов в области CI/CD. Его применяют:

Jenkins можно встретить в самых разных сферах: от финтеха и e-commerce до геймдева и телекоммуникаций. Везде, где разработка связана с постоянными изменениями и регулярными релизами, этот инструмент помогает ускорять процессы и снижать количество ошибок.

Возможности Jenkins

Jenkins изначально задумывался как инструмент для автоматизации сборок, но со временем вырос в полноценную платформу для управления всеми этапами разработки и доставки программного обеспечения. Его функциональность охватывает разные уровни CI/CD-процессов и позволяет гибко подстраиваться под потребности команды:

Jenkins как система непрерывной интеграции (CI)

Основная роль Jenkins — автоматизировать процесс интеграции кода. Каждый раз, когда разработчик вносит изменения в репозиторий, Jenkins запускает сборку, проверяет совместимость новых частей с существующим проектом и сразу сообщает об ошибках. Так можно выявить проблемы на ранних этапах.

Jenkins как часть CI/CD-процессов

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

Поддержка автоматических сборок, тестов и деплоя

Jenkins умеет:

Установка Jenkins: пошаговая инструкция

Прежде чем начать работать с Jenkins, его нужно установить и подготовить среду.

Так как Jenkins написан на Java, для его запуска требуется установленная Java Virtual Machine (JVM). Без нее сервис просто не запустится.

Как установить Jenkins на Windows

C:\Program Files\Java\jdk-21\

Этот путь понадобится при настройке Jenkins.

C:\Program Files\Java\jdk-21\

Как установить Jenkins на Linux

Для примера возьмем Ubuntu. Инструкция также подойдет для систем на базе Debian.

java -version

Если Java отсутствует (java: not found), установите JDK, например:

sudo apt update

sudo apt install openjdk-17-jdk

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \

/usr/share/keyrings/jenkins-keyring.asc > /dev/null

echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \

https://pkg.jenkins.io/debian-stable binary/ | sudo tee \

/etc/apt/sources.list.d/jenkins.list > /dev/null

sudo apt update

sudo apt install jenkins

sudo systemctl start jenkins

sudo systemctl status jenkins

В выводе должно быть: Active: active (running)

sudo ufw allow OpenSSH

sudo ufw enable

sudo ufw allow 8080

sudo ufw status

В списке должны появиться строки с 8080/tcp ALLOW Anywhere.

Как зайти в веб-интерфейс Jenkins

Откройте браузер и введите адрес вашего сервера.

Для Ubuntu/Debian это:

http://:8080

А для Windows:

http://localhost:8080

Если служба Jenkins запущена корректно, вы попадете на страницу приветствия и сможете продолжить настройку через веб-интерфейс.

Первичная настройка Jenkins

Дальше мы сосредоточимся на настройке Jenkins под Windows — в целом процесс на Linux будет выглядеть аналогично.

Как использовать Jenkins: базовая инструкция

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

Как создать новый проект в Jenkins

Как подключить GitHub/GitLab-репозиторий

Jenkins может напрямую работать с системами контроля версий. Это позволяет автоматически забирать свежий код из репозитория и запускать сборки при каждом изменении.

Настроить подключение можно и при создании проекта. Но если вы этого не сделали, то:

Если репозиторий приватный, добавьте учетные данные.

Как настроить автоматическую сборку

Чтобы Jenkins сам запускал задачу при изменении кода или по расписанию, нужно настроить триггеры:

Как настроить автоматический запуск тестов

Чтобы Jenkins запускал тесты при каждой сборке, добавьте соответствующий шаг в настройках проекта:

Что такое Jenkins pipeline

Jenkins Pipeline — это способ описать процесс сборки, тестирования и доставки приложения в виде сценария. Вместо того чтобы настраивать шаги вручную в интерфейсе, вы описываете весь конвейер в специальном файле Jenkinsfile. Он хранится вместе с кодом в репозитории, что делает процесс прозрачным и повторяемым.

Pipeline позволяет:

Фактически Jenkins Pipeline превращает настройку CI/CD в часть проекта. Любой разработчик, открыв репозиторий, может посмотреть, как именно проходит сборка и развертывание, и при необходимости внести изменения.

Разница между Freestyle-проектами и pipeline

Freestyle-проект — это базовый вариант настройки. Все шаги сборки и тестирования задаются через веб-интерфейс. Они подходит для небольших задач или первых экспериментов с Jenkins.

Pipeline-проекты дают больше гибкости. Все этапы работы описываются в специальном файле Jenkinsfile на языке Groovy. Конфигурация хранится в репозитории вместе с кодом, поэтому ее можно версионировать и изменять так же, как исходный код приложения. Pipeline позволяет управлять сложными процессами, запускать задачи параллельно и легко переносить настройки между разными окружениями.

Характеристика Freestyle-проект Pipeline-проект
Способ настройки Через веб-интерфейс В виде кода (Jenkinsfile)
Хранение конфигурации Только в Jenkins В репозитории проекта
Гибкость Подходит для простых задач Поддерживает сложные и многоступенчатые процессы
Параллельные сборки Ограниченные возможности Есть встроенная поддержка
Масштабируемость Сложно поддерживать при росте проекта Легко расширяется вместе с проектом

Синтаксис Jenkinsfile: stages, steps, agents

Jenkinsfile — это сценарий, в котором описывается весь процесс сборки и доставки проекта. Его синтаксис основан на следующих элементах:

Пример простого pipeline:

pipeline {

agent any

stages {

stage('Сборка') {

steps {

echo 'Выполняем сборку проекта...'

}

}

stage('Тесты') {

steps {

echo 'Запускаем автоматические тесты...'

}

}

stage('Деплой') {

steps {

echo 'Разворачиваем приложение...'

}

}

}

}

Таким образом, есть три этапа: сборка, тесты и деплой. На каждом из них выполняются свои шаги.

Пример многоступенчатого pipeline:

pipeline {

agent any

stages {

stage('Сборка') {

steps {

echo 'Компиляция исходного кода...'

sh 'mvn clean package'

}

}

stage('Тестирование') {

parallel {

stage('Юнит-тесты') {

steps {

echo 'Запускаем юнит-тесты...'

sh 'mvn test'

}

}

stage('Интеграционные тесты') {

steps {

echo 'Запускаем интеграционные тесты...'

sh 'mvn verify -Pintegration'

}

}

}

}

stage('Анализ кода') {

steps {

echo 'Проверяем качество кода...'

sh 'mvn sonar:sonar'

}

}

stage('Деплой на staging') {

steps {

echo 'Разворачиваем приложение на тестовом сервере...'

sh './deploy.sh staging'

}

}

stage('Деплой на production') {

when {

branch 'main'

}

steps {

echo 'Разворачиваем приложение на боевом сервере...'

sh './deploy.sh production'

}

}

}

}

В этом пайплайне:

Как настроить агент

Но если выбрали Nodes, то щелкните «Новый узел».

Плагины в Jenkins

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

Все плагины распространяются через Jenkins Update Center — центральный репозиторий, откуда их можно загружать вместе с необходимыми зависимостями.

В большинстве случаев плагин будет доступен сразу после установки. Если требуется перезапуск Jenkins, система сообщит об этом.

Безопасность в Jenkins

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

Начиная с Jenkins 2.0, большинство ключевых настроек безопасности включены по умолчанию. Это обеспечивает дополнительную защиту даже без ручной донастройки. При необходимости администратор может изменить параметры в настройках.

Перейдите в Security. Здесь можно настраивать регистрацию аккаунтов, работу API-токенов, проверку ключей для Git и так далее.

Но основные механизмы безопасности это:

Чтобы гибко управлять доступом в Jenkins, часто используют плагины. Один из самых популярных — Role-Based Authorization Strategy. Он позволяет создавать роли и назначать им разные уровни прав.

Заключение

Jenkins — это инструмент, который помогает автоматизировать ключевые этапы разработки: от сборки и тестирования до развертывания приложений. Он гибко настраивается под разные задачи, поддерживает интеграции с десятками систем и позволяет выстраивать удобные CI/CD-процессы.

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

Перейти на оригинал