Site icon 8HOST.COM

Установка Buildbot в Ubuntu 16.04

Buildbot – это система непрерывной интеграции на основе Python, предназначенная для автоматизации процессов сборки, тестирования и выпуска программного обеспечения. Она использует библиотеку Twisted для обеспечения асинхронной связи между мастером сборки и одним или несколькими воркерами (для простоты тестирования сборок на нескольких платформах). Система Buildbot простая и гибкая в настройке; кроме того, она предлагает несколько вариантов процесса сборки, благодаря чему её можно использовать в сложных сборках или проектах, которые требуют расширения инструментов с учетом их уникальных потребностей.

Данное руководство поможет установить и настроить мастер и воркер Buildbot на одной машине.

Требования

Все инструкции по настройке можно найти в этом руководстве.

1: Установка Buildbot

Проект Buildbot рекомендует использовать для установки Python Package Index, pip. Это позволит установить последнюю доступную версию (которая, как правило, на несколько релизов свежее той, которая хранится в репозитории Ubuntu).

Войдите как пользователь с доступом к sudo. Обновите индекс пакетов:

sudo apt-get update

Установите утилиту pip:

sudo apt-get install python-pip

Затем установите связку пакетов Buildbot, которая включает в себя пакеты мастера и воркера, а также зависимости программы (включая зависимости веб-интерфейса). Pip создаст файл .cache в домашнем каталоге пользователя, который запустил эту команду. Чтобы поместить файл в правильное место, добавьте в команду флаг –H.

sudo -H pip install 'buildbot[bundle]'

Выполнение команды займёт некоторое время (в зависимости от скорости сервера). Если установка прошла успешно, полученный вывод будет заканчиваться такими строками:

Successfully installed Automat-0.5.0 Jinja2-2.9.6 MarkupSafe-1.0
PyJWT-1.5.0 Tempita-0.5.2 Twisted-17.1.0 attrs-16.3.0 autobahn-17.5.1
buildbot-0.9.6 buildbot-console-view-0.9.6 buildbot-waterfall-view-0.9.6
buildbot-worker-0.9.6 buildbot-www-0.9.6 constantly-15.1.0
decorator-4.0.11 future-0.16.0 incremental-16.10.1 pbr-3.0.0
python-dateutil-2.6.0 six-1.10.0 sqlalchemy-1.1.9
sqlalchemy-migrate-0.11.0 sqlparse-0.2.3 txaio-2.7.1 zope.interface-4.4.0

Также команда может предложить обновить pip:

. . .
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.

Хотя версия pip не влияет на установку Buildbot, её рекомендуется обновить:

sudo -H pip install --upgrade pip
Collecting pip
Downloading pip-9.0.1-py2.py3-none-any.whl (1.3MB)
100% |████████████████████████████████| 1.3MB 768kB/s
Installing collected packages: pip
Found existing installation: pip 8.1.1
Not uninstalling pip at /usr/lib/python2.7/dist-packages, outside environment /usr
Successfully installed pip-9.0.1

Чтобы убедиться, что установка прошла успешно, запросите версию Buildbot:

buildbot --version
Buildbot version: 0.9.6
Twisted version: 17.1.0

Если ранее вы настроили брандмауэр UFW, на данный момент он поддерживает только трафик SSH. Запросите состояние брандмауэра:

sudo ufw status
Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Интерфейс Buildbot использует порт 8010. На данный момент он заблокирован. Откройте его:

sudo ufw allow 8010

Затем добавьте специального пользователя и группу для запуска Buildbot.

sudo addgroup --system buildbot
sudo adduser buildbot --system --ingroup buildbot --shell /bin/bash

Войдите в систему как новый пользователь и запустите установку Buildbot:

sudo --login --user buildbot

Команда откроет сессию пользователя buildbot и поместит вас в каталог /home/buildbot. Здесь можно настроить мастер и воркер.

2: Настройка мастера Buildbot

Чтобы создать мастер Buildbot, запустите следующую команду (в конце указан базовый каталог).

buildbot create-master master
mkdir /home/buildbot/master
creating /home/buildbot/master/master.cfg.sample
creating database (sqlite:///state.sqlite)
buildmaster configured in /home/buildbot/master

Скопируйте файл master.cfg.sample в master.cfg:

cp ~/master/master.cfg.sample ~/master/master.cfg

Примечание: Исходный файл master.cfg.sample останется на сервере, его можно будет использовать как шаблон для восстановления файла master.cfg.

Откройте файл, чтобы настроить доступ к интерфейсу с локальной машины.

nano ~/master/master.cfg

Чтобы получить доступ к веб-интерфейсу с локальной машины или другого устройства, измените значение buildbotURL: вместо localhost укажите IP-адрес или доменное имя сервера. В файле master.cfg находятся и другие важные параметры конфигурации, но пока эти значения можно оставить по умолчанию.

В конце файла найдите строку buildbotURL и вместо localhost введите IP-адрес или доменное имя сайта.

c['buildbotURL'] = "http://IP_or_site_domain:8010/"

Примечание: Файл master.cfg предопределяет настройки воркеров в разделе Workers.

. . .
####### WORKERS
# The 'workers' list defines the set of recognized workers. Each element is
# a Worker object, specifying a unique worker name and password.  The same
# worker name and password must be configured on the worker.
c['workers'] = [worker.Worker("example-worker", "pass")] . . .

Больше о создании воркера вы узнаете в следующем разделе данного мануала.

Изменив buildbotURL, сохраните и закройте файл. Затем запустите мастер:

buildbot start ~/master
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

Чтобы просмотреть приветственную страницу, откройте в браузере эту ссылку:

http://IP_or_site_domain:8010/
Welcome to buildbot
0 build running currently
0 recent builds

3: Настройка воркера

Взаимодействие между мастером и воркером устанавливается в том случае, если имя и пароль воркера в файле master.cfg совпадает с именем и паролем, указанным в настройках самого воркера.

Создайте воркер с помощью команды create-worker и следующих параметров.

buildbot-worker create-worker worker localhost example-worker pass
mkdir /home/buildbot/worker
mkdir /home/buildbot/worker/info
Creating info/admin, you need to edit it appropriately.
Creating info/host, you need to edit it appropriately.
Not creating info/access_uri - add it if you wish
Please edit the files in /home/buildbot/worker/info appropriately.
worker configured in /home/buildbot/worker

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

Откройте файл, в котором указан адрес электронной почты администратора, удалите строку Your Name Here <admin@youraddress.invalid> и вместо нее укажите свое имя и электронный адрес.

nano ~/worker/info/admin
8host Blog <8host@8host.com>

Сохраните и закройте файл.

По соглашению файл info/host предоставляет информацию об ОС, версию, размер памяти, скорость процессора, версии установленных библиотек и версию Buildbot, запущенную на воркере.

Откройте этот файл и обновите содержимое по умолчанию, указав в нем соответствующие данные:

nano ~/worker/info/host

Укажите данные о своей системе:

Ubuntu 16.04.2 2GB Server - Buildbot version: 0.9.6 - Twisted version: 17.1.0

Сохраните и закройте файл. Запустите воркер:

buildbot-worker start worker
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.

4: Тестовая сборка

Чтобы запустить тестовую сборку, откройте меню Builds и выберите Workers. Вы увидите информацию о воркере, которую указали в файлах info/admin и info/host. Чтобы начать сборку, кликните по сборщику runtests по умолчанию.

До первой сборки экран runtests содержит общие данные. Чтобы запустить сборку, кликните force в верхнем правом углу.

Это откроет форму, в которой нужно указать информацию о новой сборке.

Для этой тестовой сборки можно оставить поля пустыми и просто нажать кнопку Start Build во всплывающем окне. Обратите внимание: поле Your name должно содержать валидный адрес электронной почты (если вы хотите его заполнить).

Через несколько секунд сборка должна завершиться успешно:

Чтобы ознакомиться с подробностями каждого этапа сборки, кликните по числу или стрелке (слева от имени).

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

Откройте файл master.cfg:

nano ~/master/master.cfg

Добавьте следующие строки в конец файла (укажите свое имя и пароль).

. . .
c['www']['authz'] = util.Authz(
allowRules = [
util.AnyEndpointMatcher(role="admins")
],
roleMatchers = [
util.RolesFromUsername(roles=['admins'], usernames=['8host'])
] )
c['www']['auth'] = util.UserPasswordAuth([('8host','Password')])
buildbot restart ~/master

Перезапустите веб-интерфейс. После этого в правом верхнем углу появится ссылка Anonymous. Функции администратора больше не доступны.

Протестируйте только что добавленные учетные данные. Для этого нажмите Anonymous. Вы увидите окно аутентификации, где можно ввести имя пользователя и пароль. При входе в систему у пользователя Anonymous не должно быть доступа для запуска сборки (в отличие от него пользователь 8host имеет такой доступ).

Установка Buildbot завершена и имеет минимальный уровень безопасности. Однако учётные данные всё ещё передаются в виде простого текста. Прежде чем приступить к работе с Buildbot, рекомендуется настроить обратный прокси-сервер.

Читайте также: Создание unit-файла systemd для Buildbot