프로젝트 폴더 나 파일이 수정되거나 FileVersionInfo가 변경 될 때까지 빌더가 코드를 실행하도록 스케줄을 작성하도록 master.cfg를 구성하는 방법이 있습니까?특정 이벤트에 의해 buildbot이 작업을 실행하는 방법은 무엇입니까?
나는 그것이 임시 해결책이라는 것을 알고 있지만, 개발자가 새로운 버전의 제품을 컴파일 한 직후에 Build Verification Tests를 실행하는 데 필요하며 CVS에는 많은 프로젝트가 개발되어 있기 때문에 프로젝트 폴더 용 스캐너가 필요합니다. 여기
는 master.cfg에서 추출됩니다 BuildFactory에서 파생 된 일반 클래스있다def create_builders_and_schedule_it(factory, build_slaves, **kwargs):
# kwargs: change_filter=None, nightly=None, trigger_name=None)
builder_names = []
if hasattr(factory, 'subcategory'):
cat = "%s_%s" % (factory.category, factory.subcategory)
else:
cat = factory.category
if 'change_filter' in kwargs:
change_filter = kwargs['change_filter']
else:
change_filter = filter.ChangeFilter(branch = factory.branch)
for i_slave in build_slaves:
builder_name = "%s_%s" % (cat, i_slave)
builder_names.append(builder_name)
c['builders'].append(
BuilderConfig(name = builder_name,
category = factory.category,
factory = factory,
slavename = i_slave
))
# every task has 'forced' scheduler at least
c['schedulers'].append(
ForceScheduler(name = cat + "_force",
builderNames = builder_names))
# every task has 'on commit' scheduler
c['schedulers'].append(
SingleBranchScheduler(name = cat + "_singlebranch",
builderNames = builder_names,
change_filter = change_filter))
# some task can be scheduled
if 'nightly' in kwargs:
c['schedulers'].append(timed.Nightly(
name = cat + '_nightly',
branch = factory.branch,
builderNames = builder_names,
hour = kwargs['nightly'][0], minute = kwargs['nightly'][1]))
if 'trigger_name' in kwargs:
c['schedulers'].append(
Triggerable(
name = kwargs['trigger_name'],
builderNames = builder_names))
: 이제
class Autotests(BuildFactory):
""" Build products from Autotests repository """
def __init__(self, branch):
BuildFactory.__init__(self)
self.category = "autotests"
self.branch = branch
self.addStep(
Git(repourl = AUTOTESTS_REPO, branch = branch))
def build_source_archive(self):
self.subcategory = "source"
self.addStep(
ShellCommand(
workdir = "build",
command = ["./upload_to_binary_repo.sh"]))
return self
def run_BVT_prod(self):
self.subcategory = "BVT_prod"
self.addStep(
ShellCommand(
workdir = "build/BVT_tests/prod",
env = {'PATH':"/usr/bin:/bin", 'VIRTUAL_ENV':''},
command = ["./bvt_runner.sh"]))
return self
우리는 방법과 클래스를 가지고, 우리
create_builders_and_schedule_it(
Autotests("devel").run_BVT_Prod(),
['VIX_runner'],
nightly = (2,0)
)
이런 종류의 검사를 수행하는 일반적인 방법이 있습니까? 아니면 다른 방향으로보아야합니까?