ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как установить BuildBot на Ubuntu 16.04

Как установить BuildBot на Ubuntu 16.04

Введение

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

В этой статье мы установим и настроим BuildBot master и worker на одной и той же машине.

Предпосылки

Для выполнения этого урока вам потребуется:

Когда сервер настроен, вы готовы следовать далее.

Шаг 1 – Установка BuildBot

Проект Buildbot рекомендует использовать Python Package Index, pip, установить BuildBot для того, чтобы получить самую последнюю версию, которая часто имеет несколько релизов впереди новее, чем доступно в пакетах Ubuntu.

Мы начнем, как sudo пользователь, и используем apt-get update для обеспечения последнего списка пакетов:

sudo apt-get update

 

Затем мы установим pip:

sudo apt-get install python-pip

 

После того, как pip установлен, мы используем его для установки пакета BuildBot, который включает в себя master и worker, а также другую зависимость, в том числе тех, которые требуют веб – интерфейс. Pip создает файлы .cache в домашнем каталоге пользователя, который выполняет его. Мы будем использовать sudo с флагом -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.

 

Несмотря на то, что это не повлияет на нашу установку BuildBot, мы воспользуемся моментом, чтобы перейти к последней версии pip:

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, где мы настроим наш master и worker:

Шаг 2 – Настройка Master

Мы будем использовать BuildBot  с командой create-master и последующим значением базового каталога:

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

 

Затем мы отредактируем файл, чтобы позволить нам получить доступ к веб-интерфейсу с локального компьютера.

nano ~/master/master.cfg

 

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

В нижней части файла, найдите строку buildbotURL и замените localhost на IP – адрес или доменное имя вашего сайта:

~ /master/master.cfg
c['buildbotURL'] = "http://<span class="highlight">IP_or_site_domain</span>:8010/"

 

~ /master/master.cfg
. . .
####### 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")]
. . .

 

Позже в статье мы создадим worker с этими учетными данными.

Когда вы закончили модифицировать ‘buildbotURL’, сохраните и закройте файл, а затем запустите мастер:

buildbot start ~/master

 

Вывод
Following twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

 

И, наконец, давайте посетим сайт в веб – браузере на порту 8010 по адресу buildbot URL, который мы настроили:

http://IP_or_site_domain:8010/

Снимок экрана: экран приветствия в BuildBot

Теперь, когда у нас есть рабочий master, мы создадим пример worker.

Шаг 3 – Настройка работника (worker)

Отношения между master и worker устанавливается, когда имя worker’s и пароль в файле master.cfg совпадают с именем и паролем worker, настроенным для использования master.

На этом шаге мы создадим и настроим worker для вызова команды buildbot-worker’s 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

 

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

Мы настроим их в настоящее время. Во-первых, откройте файл, содержащий электронную почту администратора, удалите пример строки: Your Name Here <admin@youraddress.invalid> и замените его вашим именем и адресом электронной почты.

nano ~/worker/info/admin

 

~/worker/info/admin
AndreyEx <info@andreyex.ru>

 

Когда вы закончите, сохраните и закройте файл.

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

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

nano ~/worker/info/host

 

Обновите информацию, которую вы используете, чтобы отразить специфику вашей системы:

~/worker/info/host
Ubuntu 16.04.2 2GB - Buildbot version: 0.9.6 - Twisted version: 17.1.0

 

Когда вы закончите, сохраните и выйдите. И, наконец, запустите worker:

buildbot-worker start worker

 

Вывод
Following twistd.log until startup finished..
The buildbot-worker appears to have (re)started correctly.

 

Теперь, master и worker настроены и работают. теперь мы будем выполнять тестовую сборку.

Шаг 4 – Запуск теста Build

Для того, чтобы запустить тестовую сборку, мы будем откроем меню «Builds» в веб – интерфейсе, затем выберите «Workers». Пример worker и информацию мы устанавливаем в info/adminи info/host. Отсюда, мы можем нажать на worker по умолчанию, «runtests», чтобы запустить создание.

Скриншот экрана рабочей области в BuildBot

 

Экран «runtests» будет иметь мало информации, пока первый запрос сборки не производится. Мы заставим сейчас, нажав кнопку «force» в верхнем правом углу экрана:

Снимок экрана показывает кнопку силы

Это вызовет диалоговое окно, которое позволяет вводить информацию о принудительной сборке.

Снимок экрана: всплывающее окно построения force в BuildBot

 

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

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

Снимок экрана показывает успешную сборку

 

Вы можете изучить детали каждого шага в сборке, нажав на номер или стрелку рядом с его именем:

введите описание изображения здесь

 

Вы, возможно, заметили, что мы не должны были войти, чтобы выполнить эту сборку. По умолчанию, любой желающий может получить доступ к административным функциям, поэтому перед тем, как мы закончим, мы воспользоваться моментом, чтобы выйти и создать учетную запись пользователя. Вы можете узнать больше о доступных параметрах модулей по адресу http://docs.buildbot.net/current/developer/authz.html.

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

nano ~/master/master.cfg

 

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

Файл: ~/master/master.cfg
. . .
c['www']['authz'] = util.Authz(
       allowRules = [
           util.AnyEndpointMatcher(role="admins")
       ],
       roleMatchers = [
           util.RolesFromUsername(roles=['admins'], usernames=['AndreyEx'])
       ]
)
c['www']['auth'] = util.UserPasswordAuth([('AndreyEx','Password')])

 

buildbot restart ~/master

 

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

введите описание изображения здесь

 

Мы проверим учетные данные, мы просто добавили, нажав кнопку «Anonymous», после чего откроется окно входа в систему, где можно ввести логин и пароль, который мы настроили. Когда мы вошли, мы должны увидеть, что «Anonymous» больше не имеет доступа, чтобы начать строить, наш пользователь «AndreyEx» может.

введите описание изображения здесь

 

На данный момент, наша установка BuildBot завершена, и мы сделали минимальный шаг, чтобы настроить интерфейс. Имя пользователя и пароль, однако, передаются в виде обычного текста. Мы рекомендуем в качестве следующего шага и перед использованием BuildBot всерьез, что вы настроили веб – интерфейс с обратным прокси – сервером.

Вывод

В этой статье, мы установили и настроили master BuildBot и worker BuildBot на одной и той же машине.

 

Exit mobile version