
Содержание
Статья писалась для версии Jenkins 2.53 для более ранних версий, некоторые шаги установки и настройки могут отличаться.
Обзор платформы
Jenkins – это инструмент непрерывной интеграции, который чаще всего используется для разработки программного обеспечения. Это среда автоматизации, которая выполняет повторяющиеся задания. Jenkins может выполнять и контролировать выполнение команд на удаленных системах, а также всего того, что можно выполнить из командной строки. С помощью вспомогательных плагинов Jenkins объединяет электронную почту, TestNG и другие инструменты.
Установка Jenkins
Прежде чем приступить к установке Jenkins, нужно добавить ключ и список исходных кодов. Все команды выполняются под root-пользователем.
sudo su
Итак, добавляем ключ:
wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
А затем создайте список исходных кодов для Jenkins:
echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list
Теперь нужно просто обновить кэш apt, а затем перейти к установке Jenkins.
apt-get update
Обратите внимание: Jenkins имеет большой список зависимостей, установка которых может занять некоторое время.
apt-get install jenkins
После установки система автоматически запустит сервис Jenkins. Проверить статус можно следующей командой:
service jenkins status

Как видим, сервис запущен и находиться в активном статусе. Если сервис неактивен, то необходимо проверить, свободен ли порт 8080 и хватает оперативной памяти (Jenkins требует от 256MB до 1GB).
Настройка Jenkins
Управление Jenkins осуществляется через веб-интерфейс, по умолчанию доступный на порту 8080:
Открываем в браузере страницу http://[IP-адрес сервера]:8080:

Если интерфейс не появился, то необходимо открыть порт 8080 и проверить статус работы сервиса Jenkins. Для продолжения настройки нам потребуется ввести пароль администратора, который хранится в файл /var/lib/jenkins/secrets/initialAdminPassword.
Открываем файл любым удобным способом и копируем пароль. Скопированный пароль вставляем в поле ввода и нажимаем "Продолжить".
На следующем шаге нам необходимо выбрать режим установки плагинов, которые будут установленные вместе с Jenkins. Выбираем Install suggested plugins.

После установки всех плагинов создаем профиль администратора.

Имя пользователя и пароль запоминаем для дальнейшей работы. Нажимаем "Продолжить". На экране появится сообщение, свидетельствующее о готовности Jenkins к работе. На этом основная настройка закончена. Нажимаем на кнопку “Start using Jenkins” и переходим в рабочую панель Jenkins.
Установка плагинов
Для установки плагина перейдите в «Manage Jenkins» — «Manage Plugins» — «Available» и выберите нужный плагин. Рекомендую воспользоваться фильтром для быстрого поиска.
Нажимаем «Download now and install after restart» для чистой установки плагина с перезапуском. В появившемся окне установки включаем галочку «Restart Jenkins when installation is complete and no jobs are running» и ждём установки с перезагрузкой. Страница должна сама обновиться. После установки можно возвращаться на главную страницу и продолжать настройки.
Настройка аутентификации и прав доступа
Для этого нам нужно снова перейти в «Manage Jenkins», а там нажать кнопку «Setup Security» в правом верхнем углу. В появившемся окне настроек включаем настройки безопасности галочкой «Enable security». Далее нам нужно выбрать, каким способом будет происходить аутентификация пользователей. По умолчанию доступны несколько способов. Нас интересует «Jenkins’ own user database», если мы хотим входить с данными, которые хранятся в самом Jenkins или «Bitbucket OAuth Plugin», если мы хотим входить через Bitbucket.
Аутентификация через встроенную базу данных Jenkins
Здесь особо ничего настраивать не нужно. Разве что, возможно, стоит запретить регистрацию пользователей сняв галку «Allow users to sign up».
Аутентификация через Bitbucket
Для этого же способа нам потребуется сходить в настройки своего аккаунта Bitbucket и зарегистрировать приложение. Для этого заходим на страницу своего аккаунта, нажимаем Manage account и переходим в раздел OAuth. Здесь добавляем приложение кнопкой Add consumer. После чего получаем Key, который прописываем в Client ID и Secret, который копируем в Client Secret.
Настройка прав доступа
После того как мы настроили вход, нужно закрыть доступ посторонним людям. Для этого можно использовать несколько способов, самым простым из которых будет Matrix-based security. Здесь главное сделать две вещи: Выставить пользователю Anonymous доступ к действию Read в категории View, иначе Jenkins может работать некорректно. Вместе с этим сразу же, не сохраняя перед этим настройки, создать пользователя, под которым в дальнейшем будет происходить управление системой, иначе после применения этих настроек, вы не сможете зайти в интерфейс Jenkins. Если вы аутентифицируетесь через внешний сервис — укажите имя пользователя на этом сервисе.
Перепроверьте настройки и нажимайте кнопку «Save».
Первый вход или создание пользователя
После сохранения настроек вы попадёте либо в форму входа, либо будете перенаправлены на внешний сервис аутентификации.
Вход со встроенной базой пользователей
Jenkins направит вас на форму входа. У вас же ещё нет пользователя, поэтому удалите лишнее из адреса и перейдите в корень веб-интерфейса — вам будет показана форма создания пользователя.
Вход через Bitbucket
В случае с Bitbucket или другим внешним сервисом нет необходимости регистрации, поэтому вам нужно будет лишь подтвердить на этом сервисе, что вы доверяете приложению. После этого вы вернётесь в систему уже полноправным администратором (если, конечно, выставили такие права своей учётной записи).
Создание нового проекта (Job)
Теперь, когда все установлено и запущено, можно приступить к созданию нового проекта (или job). Для того чтобы создать новый job необходимо в левом верхнем меню выбрать пункт New Item.
В новом меню выбираем Freestyle project, так же необходимо дать имя проекту, для примера выбирем - test project. После нажатия кнопки Ok попадаем в меню настройки нашего проекта.
Поле в меню обозначают следующее: Project name - имя проекта, которое будет отображаться на главной странице Jenkins. Description - описание проекта. Source Code Management - ссылка на репозиторий, откуда Jenkins будет получать последние исходники. Build Triggers - триггеры при которых Job будет запускаться. Build Environment - настройки среды выполнения Job. Build - действия, которые необходимо выполнить во время запуска Job. Post-build actions - действия, которые будут выполнены после того, как пройдет Job.
Рассмотрим Build подробней из выпадающего списка нам интересен пункт Execute shell, в после Command вводим необходимые для проекта комманды. Для примера введем:
uptime
После сохранения и выхода в меню проекта test project, запускаем проект - нажав на кнопку Build now.
Вскоре после этого слева в меню Build history появится первая сборка с #1. Для того чтобы подробней посмотреть отчет сборки, нажмите на синюю сферу. Появится отчет по выполненому проекту, котрый будет находится под Console Output.
Запуск проекта по расписанию
Jenkins позволяет запускать проекты по требованию или в определенное время. Теперь пора настроить расписание сборки. Сначала нажмите на ссылку back to project, чтобы снова просмотреть проект.
Вернувшись к просмотру проекта, кликните кнопку Configure. Она откроет страницу настройки. Теперь найдите раздел Build Triggers и выберите Build periodically. Теперь это поле ввода принимает синтаксис crontab; следовательно, настройка
@hourly
будет запускать его каждый час, а
* * * * *
будет запускать его каждую минуту. В данном руководстве будет использоваться настройка
0 */6 * * *
, которая запускает проект каждые 6 часов. Когда проект будет сохранен, планировщик начнет работу в назначенное время.
С планировщиком Jenkins поставляются несколько дополнений. Чтобы получить о них больше информации, нажмите синюю кнопку с вопросительным знаком справа от поля ввода.
Проблемы и их решения
Изменить порт подключения Jenkins
В ряде случаев порт 8080 занят или его необходимо освободить под другие сервисы.
Чтобы Jenkins подключался к другому порту, в файле etc/default/jenkins нужно изменить значение переменной HTTP_PORT на желаемый порт и перезапустить сервис Jenkins.
Возвращение доступа
Если вы ошиблись при настройке прав доступа и Jenkins не пустил вас в систему, не пугайтесь. Можно выключить защиту в конфиге:
nano /var/lib/jenkins/config.xml
В открывшемся файле замените строку
<useSecurity>true</useSecurity>
на
<useSecurity>false</useSecurity>
и перезапустите Jenkins:
service jenkins restart
Теперь ваш Jenkins снова открыт всему миру. Возвращайтесь к настройке параметров входа и прав доступа.