Это относится к:
Buildbot version: 0.8.8
Twisted version: 13.2.0
У меня были некоторые серьезные проблемы, чтобы заставить его работать с простым репозиторием hg, в то время как тот же проект прекрасно работал с git и соответствующими функциями. Итак, вот оно.
С нашим репозиторием в master.cfg связаны три случая: источники изменений, планировщики и компоновщики, только с источниками изменений и компоновщиками, которые используют специфические для Mercurial функции.
В источники изменений раздел:
from buildbot.changes.hgpoller import HgPoller
therepo=HgPoller(repourl="/home/user/test/my_project/",
branch='default',
pollInterval=30,
workdir='myrepo')
c['change_source'] = []
c['change_source'].append(therepo)
Здесь я использую HgPoller
вместо PBChangeSource
. Последний является более сложным, но также требует дополнительных шагов настройки (укажите порт и еще одно имя пользователя и пароль).
repourl
должен указывать на корень вашего хранилища hg. Любой URL, который можно использовать для «hg pull» или «hg clone», является приемлемым. В этом примере используется локальный репозиторий, но он может быть на сервере, тогда вы должны указать http или что-то еще.
По умолчанию branch
для Mercurial установлено значение «по умолчанию». pollInterval=30
говорит, что каждые 30 секунд проверять новый коммит (это из игрушечного примера, в действительности> 30 будет более подходящим).
Теперь строитель , который создается после того, как фиксация обнаружена и передана планировщиком (ами):
from buildbot.process.factory import BuildFactory
from buildbot.steps.source.mercurial import Mercurial
factory = BuildFactory()
#watch out: this function is Mercurial, NOT Hg
checkout_default = Mercurial(repourl="/home/user/test/my_project/",
defaultBranch='default',
branchType='inrepo',
haltOnFailure = True)
factory.addStep(checkout_default)
# then you add some build instructions and don't forget to import the necessary...
Что объясняет, почему моя вещь не сработала, так это то, что я не указал defaultBranch
и branchType
. Эти ключевые слова не такие, как в Git (), так что будьте осторожны. Это немного сложно, так как я не нашел их в руководстве пользователя онлайн, но оно есть, если вы уделите время интерпретатору python:
import buildbot
help(buildbot.steps.source.mercurial)
Также обратите внимание, что это функция Mercurial, импортированная из buildbot.steps.source.mercurial
, которая не является той же функцией Mercurial, которую вы импортировали бы из buildbot.steps.source.Mercurial
. Последний устарел (или тот, который вы бы использовали в более старой версии). Я благодарю tomprince из канала IRC buildbot на freenode за указание на это.