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

Вступление

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

В этом руководстве мы установим и настроим мастера сборки Buildbot и работника на одном компьютере.

Предпосылки

Чтобы следовать этому уроку, вам понадобится:

  • * Сервер Ubuntu 16.04 с не менее 1 ГБ ОЗУ *, настроенный с пользователем root + + sudo + `и межсетевым экраном, как описано в https://www.digitalocean.com/community/tutorials/initial-server- setup-with-ubuntu-16-04 [Руководство по первоначальной настройке сервера Ubuntu 16.04].

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

Шаг 1 - Установка Buildbot

Проект Buildbot рекомендует использовать индекс пакетов Python, pip, для установки Buildbot для получения самой последней версии, которая часто на несколько выпусков опережает то, что доступно в пакетах Ubuntu.

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

sudo apt-get update

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

sudo apt-get install python-pip

Как только pip станет доступен, мы будем использовать его для установки пакета Buildbot, который включает в себя мастер и рабочий, а также другие зависимости, в том числе те, которые требуются для веб-интерфейса. Pip создает файлы + .cache + в домашнем каталоге пользователя, который его выполняет. Мы будем использовать флаг + sudo + '`+ -H +`, чтобы поместить эти файлы в нужное место:

sudo -H pip install 'buildbot[bundle]'

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

Output. . .
Successfully installed Automat-0.6.0 Jinja2-2.10 MarkupSafe-1.0
PyJWT-1.6.0 Tempita-0.5.2 Twisted-17.9.0 attrs-17.4.0 autobahn-18.3.1
buildbot-1.0.0 buildbot-console-view-1.0.0 buildbot-grid-view-1.0.0
buildbot-waterfall-view-1.0.0 buildbot-worker-1.0.0 buildbot-www-1.0.0
constantly-15.1.0 decorator-4.2.1 future-0.16.0 hyperlink-18.0.0 idna-2.6
incremental-17.5.0 pbr-3.1.1 python-dateutil-2.6.1 six-1.11.0 sqlalchemy-1.2.5
sqlalchemy-migrate-0.11.0 sqlparse-0.2.4 txaio-2.9.0 zope.interface-4.4.3

Также может отображаться рекомендация обновить сам пипс:

Output. . .
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
OutputCollecting 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
OutputBuildbot version: 1.0.0
Twisted version: 17.9.0

В предварительном условии учебника мы настроили брандмауэр UFW для разрешения только трафика SSH. Мы проверим статус:

sudo ufw status
OutputStatus: 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 + create-master +, за которой следует значение базового каталога:

buildbot create-master ~/master
Outputmkdir /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.cfg

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

Затем, в нижней части файла, установите значение директивы + buildbotNetUsageData +. Это определяет, будет ли Buildbot сообщать разработчикам статистику использования, чтобы помочь улучшить приложение. Вы можете установить это в + None +, чтобы отказаться от этого. Если вы не против отправить основную информацию о вашем использовании, используйте вместо этого строку " basic ". + Подробнее об этом параметре вы можете узнать в the глобальной документации по конфигурации Buildbot:

~ / Ведущий / master.cfg

c['buildbotNetUsageData'] = None
# To send back basic information, use this instead:
#c['buildbotNetUsageData'] = 'basic'

Когда вы изменили + 'buildbotURL' + и добавили строку + buildbotNetUsageData +, сохраните и выйдите из файла.

Проверьте конфигурацию мастера, набрав:

buildbot checkconfig ~/master

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

Output. . .
Config file is good!

Если выходные данные указывают на наличие синтаксических ошибок, вернитесь и проверьте файл еще раз. Как только команда + checkconfig + указывает на успех, запустите мастер:

buildbot start ~/master

После успешного перезапуска вы должны получить следующее подтверждение:

OutputFollowing twistd.log until startup finished..
The buildmaster appears to have (re)started correctly.

Наконец, давайте зайдем на сайт в веб-браузере через порт 8010 на настроенном нами + buildbotURL +:

+ HTTP: //: 8010 / +

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-welcome.png [Снимок экрана приветствия Buildbot]

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

Шаг 3 - Настройка работника

Связь между мастером и работником устанавливается, когда имя и пароль работника в файле + master.cfg + совпадают с именем и паролем работника, настроенного для использования мастера.

На этом этапе мы создадим и настроим работника, вызвав команду + buildbot-worker + '`` create-worker + `и передав четыре настройки:

  • + worker + - это имя каталога, в котором будут храниться настройки работника.

  • + localhost + - это адрес, на котором работает мастер работника

  • + example-worker + - это имя работника, которое должно однозначно идентифицировать работника в файле + ~ / master / master.cfg +.

  • + pass + - это пароль рабочего, и этот пароль должен соответствовать значению в + ~ master / master.cfg +.

buildbot-worker create-worker ~/worker localhost example-worker pass
Outputmkdir /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 + мастеру сборки, где он работает. Они будут отображаться в веб-интерфейсе, чтобы предоставить разработчикам больше информации о неудачных тестах.

Мы настроим это сейчас. Сначала откройте файл, содержащий электронную почту администратора, удалите строку примера + Ваше имя здесь <[email protected]> + и замените его своим именем и адресом электронной почты.

nano ~/worker/info/admin

~ / Рабочий / Информация / администратор

<>

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

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

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

nano ~/worker/info/host

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

~ / Рабочий / Информация / хост

Ubuntu 16.04.2 2GB Droplet - Buildbot version: 1.0.0 - Twisted version: 17.1.0

Когда вы закончите, сохраните и выйдите. Наконец, начнем рабочий:

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

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

Шаг 4 - Запуск тестовой сборки

Чтобы запустить тестовую сборку, мы откроем меню «Сборки» в веб-интерфейсе, затем выберите «Рабочие». Рабочий пример и информация, которую мы установили в + info / admin + и + info / host +, должны отображаться. Отсюда мы можем нажать на сборщик по умолчанию, «runtests», чтобы вызвать сборку.

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-workers.png [Снимок экрана рабочего экрана Buildbot]

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

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buldbot-force.png [Снимок экрана с кнопкой включения]

Это вызовет диалог, который позволяет вам ввести информацию о принудительной сборке. + изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-info.png [Скриншот всплывающего окна с принудительной сборкой Buildbot]

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

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

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-success.png [снимок экрана, показывающий успешную сборку]

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

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-build-details.png [введите описание изображения здесь]

Возможно, вы заметили, что нам не нужно было входить в систему, чтобы выполнить эту сборку. По умолчанию любой может получить доступ к административным функциям, поэтому, прежде чем мы закончим, мы потратим немного времени, чтобы заблокировать его и создать учетную запись пользователя. Вы можете узнать больше о доступных опциях в [Документация авторизации Buildbot]. (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=[''])
      ]
)
c['www']['auth'] = util.UserPasswordAuth({'': ''})

Когда вы закончите, запустите еще одну проверку синтаксиса для файла:

buildbot checkconfig ~/master
OutputConfig file is good!

Если ошибки не отображаются, перезапустите главную службу:

buildbot restart ~/master

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

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-anonymous.png [введите описание изображения здесь]

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

изображение: https: //assets.digitalocean.com/articles/buildbot-install-ubuntu-1604/buildbot-sammy.png [введите описание изображения здесь]

На данный момент наша установка Buildbot завершена, и мы предприняли минимальный шаг для защиты интерфейса. Однако имя пользователя и пароль передаются в виде простого текста. В качестве следующего шага мы рекомендуем, прежде чем использовать Buildbot всерьез, чтобы вы обезопасили веб-интерфейс с помощью http://docs.buildbot.net/current/manual/cfg-www.html?highlight=reverse%20proxy#reverse-proxy- Конфигурация [обратный прокси].

Заключение

В этом руководстве мы установили и настроили мастер Buildbot и локального работника Buildbot на одном компьютере. Если вы оцениваете Buildbot, вы можете принять участие в http://docs.buildbot.net/current/tutorial/tour.html[Quick Tour проекта.

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

Related