Введение
Buildbot является Python на основе непрерывной системной интеграции для автоматизации сборки программного обеспечения, тестирования и процесса выпуска. Он использует Python, библиотеку Twisted для обработки асинхронной связи между buildmaster и одного или нескольких работников, чтобы облегчить тестирование основываемое на нескольких платформах. Buildbot легко настраивается и делает несколько предположений о том, как процесс сборки должен работать, что делает его пригодным для сложных процессов или проектов, которые требуют инструментов, чтобы расти с уникальными потребностями проекта сборки.
В этой статье мы установим и настроим BuildBot master и worker на одной и той же машине.
Предпосылки
Для выполнения этого урока вам потребуется:
- сервер Ubuntu 16,04, по крайней мере, 1 Гб оперативной памяти, сконфигурированный с некорневым sudo пользователем и брандмауэром, как описано в руководстве по первоначальной настройке сервера Ubuntu 16.04.
Когда сервер настроен, вы готовы следовать далее.
Шаг 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 – адрес или доменное имя вашего сайта:
c['buildbotURL'] = "http://<span class="highlight">IP_or_site_domain</span>:8010/"
. . . ####### 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/
Теперь, когда у нас есть рабочий master, мы создадим пример worker.
Шаг 3 – Настройка работника (worker)
Отношения между master и worker устанавливается, когда имя worker’s и пароль в файле master.cfg совпадают с именем и паролем worker, настроенным для использования master.
На этом шаге мы создадим и настроим worker для вызова команды buildbot-worker’s create-worker и состоящая в четырех настроек:
- worker: это имя каталога, в котором будут храниться настройки на работника
- localhost: это адрес, где мастер работника работает
- example-worker: это имя работника и должен однозначно идентифицировать работника в файле ~/master/master.cfg.
- pass: пароль работника и этот пароль должен соответствовать значению ~master/master.cfg.
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
AndreyEx <info@andreyex.ru>
Когда вы закончите, сохраните и закройте файл.
Файл info/host, по соглашению, обеспечивает ОС, версия, размер памяти, скорость процессора, версии соответствующих библиотек установлены, и, наконец, версия Buildbot работает на worker.
Откройте файл и вставьте в соответствующей строке информацию, обновляйте содержание по мере необходимости для вашей системы:
nano ~/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», чтобы запустить создание.
Экран «runtests» будет иметь мало информации, пока первый запрос сборки не производится. Мы заставим сейчас, нажав кнопку «force» в верхнем правом углу экрана:
Это вызовет диалоговое окно, которое позволяет вводить информацию о принудительной сборке.
Для этого теста сборки, мы оставим поля пустыми и нажмите кнопку «Start Build» во всплывающем окне. Обратите внимание, что если вы вводите значение в поле «Your name», то он должен содержать действительный адрес электронной почты.
Через несколько секунд, сборка должна завершиться успешно:
Вы можете изучить детали каждого шага в сборке, нажав на номер или стрелку рядом с его именем:
Вы, возможно, заметили, что мы не должны были войти, чтобы выполнить эту сборку. По умолчанию, любой желающий может получить доступ к административным функциям, поэтому перед тем, как мы закончим, мы воспользоваться моментом, чтобы выйти и создать учетную запись пользователя. Вы можете узнать больше о доступных параметрах модулей по адресу http://docs.buildbot.net/current/developer/authz.html.
Откройте master.cfgфайл еще раз:
nano ~/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 на одной и той же машине.