Установка Jenkins в Linux

Jenkins logoВ какой-то момент практически любому серьёзному разработчику приходится столкнуться с таким явлением как непрерывная интеграция (Continuous Integration). Одним из средств для организации CI является Jenkins — форк Hudson. Давайте же установим его и произведём самую базовую настройку.

Я приведу примером установку на Debian 7. Эта статья подойдёт для установки на многие дистрибутивы debian-семейства. В других некоторые моменты будут отличаться из-за отличия системы управления пакетами.

Начальные требования

  • В наличии имеется машина с дистрибутивом семейства Debian
  • Имеются права root на этой машине
  • 1 или более ГБ оперативной памяти
    Вообще, рекомендации по объёму оперативной памяти сильно расхожи. Кто-то рекомендует объём «с запасом» для больших проектов от 16 гигабайт, а кто-то обходится и 512 мегабайтами. Я лично остановился на объёме в 1 гигабайт в качестве стартовой точки, так как Jeknins написан на Java, а софт на этом языке очень любит кушать память.

Установка

Лично я выполняю весь процесс установки от пользователя root, но так как такая практика не рекомендуется, то можно просто предварять команды sudo. Либо же можно ступить на тёмную сторону силы и сделать, например, sudo -i .

Для начала добавим PGP-ключ репозитория и сам репозиторий в нашу систему:

wget -q -O - http://pkg.jenkins-ci.org/debian/jenkins-ci.org.key | apt-key add -
echo deb http://pkg.jenkins-ci.org/debian binary/ > /etc/apt/sources.list.d/jenkins.list

обновим список пакетов в кеше APT

aptitude update

и установим сам Jenkins

aptitude install jenkins
Панель Jenkins после установки
Панель Jenkins после установки

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

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

Здесь нужно определить, как вы хотите аутентифицироваться в системе: через учётные записи, которые хранятся в самом Jenkins или через внешний сервис (Bitbucket, Github, и т.п.). Если вы планируете использовать внешний сервис — нужно поставить его плагин. В случае с Bitbucket, это плагин «Bitbucket OAuth Plugin». Если нет — просто пропустите установку плагина и читайте дальше.

Установка плагина на примере Bitbucket

shot_2014_09_19__20_26_41Для установки плагина перейдите в «Manage Jenkins» — «Manage Plugins» — «Available» и выберите нужный плагин. Рекомендую воспользоваться фильтром для быстрого поиска.

Нажимаем «Download now and install after restart» для чистой установки плагина с перезапуском. В появившемся окне установки включаем галочку «Restart Jenkins when installation is complete and no jobs are running» и ждём установки с перезагрузкой. Страница должна сама обновиться. После установки можно возвращаться на главную страницу и продолжать настройки.

Настройка аутентификации и прав доступа

Наш Jeknins всё ещё доступен первому зашедшему, о чём предупреждает нас сообщением

Unsecured Jenkins allows anyone on the network to launch processes on your behalf. Consider at least enabling authentication to discourage misuse.

Поэтому давайте настроим права доступа и механизм входа в систему. Для этого нам нужно снова перейти в «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
Подтверждение доступа через Bitbucket

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

Возвращение доступа

Если вы ошиблись при настройке прав доступа и Jenkins не пустил вас в систему, не пугайтесь. Можно выключить защиту в конфиге:

nano /var/lib/jenkins/config.xml

В открывшемся файле замените строку

<useSecurity>true</useSecurity>

на

<useSecurity>false</useSecurity>

и перезапустите Jenkins:

service jenkins restart

Теперь ваш Jenkins снова открыт всему миру. Возвращайтесь к настройке параметров входа и прав доступа.

Что дальше?

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

UPD: Автоматизация сборки по коммиту в Bitbucket.

 

1 Comment


Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *