Как масштабировать buildbot в компании - PullRequest
12 голосов
/ 03 августа 2009

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

Согласно руководству по buildbot, каждый buildmaster отвечает за 1 кодовую базу. Это означает, что компании, которая хочет использовать buildbot, скажем, на 10 проектах, необходимо поддерживать 10 различных наборов установок buildbot (конфигурации master-slave, открытые порты, веб-сайты с выводом и т. Д.). Так ли это на самом деле? Я пропускаю опцию, которая создает мэш-ап, который легко обслуживать и отслеживать?

Спасибо!

Ответы [ 2 ]

4 голосов
/ 03 августа 2009

На моем рабочем месте мы используем Buildbot для тестирования одной программы на нескольких архитектурах и версиях Python. Я использую одного мастера сборки, чтобы контролировать около 16 рабов. Каждый набор рабов извлекает из своего репо и тестирует его на Python 2.X.

Исходя из моего опыта, было бы легко настроить один мастер сборки для запуска набора проектов. Это может быть не очень хорошей идеей, потому что страница водопада (на которой подчиненные сборки сообщают о результатах) может быть перегружена несколькими рабами. Если вам удобно листать длинную страницу водопада, тогда это не будет проблемой.

EDIT:

Команда обновления в master.cfg:

test_python26_linux.addStep(ShellCommand, name = "update pygr",
    command = ["/u/opierce/PygrBuildBot/update.sh","000-buildbot","ctb"], workdir=".")

000-buildbot и ctb - это дополнительные параметры, указывающие, из какой ветки и репо нужно извлечь информацию, чтобы получить информацию. Скрипт update.sh - это то, что я написал, чтобы избежать несвязанной проблемы с git. Если вы хотите запустить разные проекты, вы можете написать что-то вроде:

builder1.addStep(ShellCommand, name = "update project 1",
    command = ["git","pull","git://github.com/your_id/project1.git"], workdir=".")

 (the rest of builder1 steps)

builder2.addStep(ShellCommand, name = "update project 2",
    command = ["git","pull","git://github.com/your_id/project2.git"], workdir=".")

(the rest of builder2 steps)

Два проекта не должны быть связаны. Buildbot создает каталог для каждого сборщика и выполняет все шаги в этом каталоге.

3 голосов
/ 28 октября 2010

FYI, BuildBot 0.8.x поддерживает несколько репозиториев на одном мастере, немного упрощая.

...