Buildbot является Python на основе непрерывной системной интеграции для автоматизации сборки программного обеспечения, тестирования и процесса выпуска. Он использует Python, библиотеку Twisted для обработки асинхронной связи между buildmaster и одного или нескольких работников, чтобы облегчить тестирование основываемое на нескольких платформах. Buildbot легко настраивается и делает несколько предположений о том, как процесс сборки должен работать, что делает его пригодным для сложных процессов или проектов, которые требуют инструментов, чтобы расти с уникальными потребностями проекта сборки.
В этой статье мы установим и настроим BuildBot master и worker на одной и той же машине.
Для выполнения этого урока вам потребуется:
Когда сервер настроен, вы готовы следовать далее.
Проект 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:
Мы будем использовать 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.
Отношения между 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
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 настроены и работают. теперь мы будем выполнять тестовую сборку.
Для того, чтобы запустить тестовую сборку, мы будем откроем меню «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 на одной и той же машине.