Поддержка нескольких репозиториев с использованием Buildbot

В настоящее время Buildbot не поддерживает несколько репозиториев. Если кто-то хочет иметь это, то нужно запускать отдельные экземпляры Buildbot.

Тем не менее мне любопытно, если кто-нибудь придумал творческий обходной путь, чтобы эта функция работала в любом случае.

4 ответа

Обновить

Этот ответ недавно получил несколько отрицательных отзывов. Обратите внимание, что этот ответ относится к выпускам buildbot, которые были опубликованы / использованы в конце 2012 года - начале 2013 года, и может не применяться в будущих версиях.

Оригинальный ответ

Как сказал @Macke, buildbot (>= 0.8.x) поддерживает несколько проектов / репозиториев. Это делается с помощью конфигурации, подобной следующей:

# Set configuration to watch the Git repository for possible
# changes. When a change does occur the schedulers will be
# notified with the project data (TestProj).
c['change_source'] = []
c['change_source'].append(
        GitPoller( 
                repourl ='git://github.com/SO/my_test_project.git',
                project = 'TestProj',  
                branch  = 'master',
                workdir = '/home/buildmaster/repos/TestProj'
        )
)

# Set the schedule to run on each change, but only for the project
# specified above via the project information.
c['schedulers'] = []
c['schedulers'].append(
        SingleBranchScheduler(
                name = "TestProj-master",
                builderNames = ['TestProj-master-builder'],
                change_filter = ChangeFilter(
                        project = 'TestProj',
                        branch  = 'master'
                )
        )
)

Вы можете видеть, что project параметр в источнике изменений затем снова используется в планировщике change_filter свойство, чтобы гарантировать, что планировщик отвечает только на этот конкретный источник изменений. Это позволяет настроить несколько источников изменений и несколько планировщиков, отвечающих на явно выбранные источники изменений.

Начиная с версии 0.8.7p1, buildbot поддерживает несколько кодовых баз

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

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

|> В настоящее время Buildbot не поддерживает несколько репозиториев.

Я не очень понимаю вопрос.. извините. Вы имеете в виду, что вам нужно запустить несколько главных серверов? На самом деле разработчики buildbot советуют это делать, но у меня работает наоборот: вы можете иметь то же самое master.cfg несколько рабов (колонны в водопаде) и для каждого из них BuildFactory с разными первыми шагами типа: Git(repourl=...) и / или Mercurial(repourl=...) и т.п.

Каждый будет клонировать / извлекать из разных репозиториев, и вы даже можете добавить еще несколько проверок, которые необходимы на последующих шагах (используя maven или непосредственно ваш клиент scm). Единственная проблема с наличием уникального master.cfg файл заключается в том, что у всех сборщиков будет только один способ получения уведомлений об изменениях; у нас есть например PBChangeSource() (мастер уведомляется удаленным кодом, он не имеет ничего общего). Если, например, у вас есть SCM с хорошей поддержкой PBChangeSource (например, svn, hg, git) и другие с плохой поддержкой (например, MKS), у вас должно быть два экземпляра главного сервера, чтобы справиться с этим.

Надеюсь, это поможет.

Другие вопросы по тегам