QuasarAppCI/BuildBotLib/buildBotShedulers.py
2021-10-28 10:48:57 +03:00

112 lines
3.5 KiB
Python

# This Python file uses the following encoding: utf-8
from BuildBotLib.buildBotModule import BuildBotModule
from buildbot.plugins import schedulers
from buildbot.plugins import util
class BuildBotShedulers(BuildBotModule):
codebases = {}
shedulers = []
def __init__(self, masterConf):
BuildBotModule.__init__(self, masterConf)
def addScheduler(self, prop, worker):
shedulerName = 'force-' + worker
self.shedulers.append(
schedulers.ForceScheduler(
name=shedulerName,
properties=prop,
builderNames=[worker]
)
)
def initScheduler(self):
buildersCode = ['LinuxBuilder',
'AndroidBuilder_v7',
'AndroidBuilder_v8',
'AndroidBuilder_v8Qt6',
'WindowsBuilder',
'LinuxCMakeBuilder',
'LinuxCMakeBuilderQt6',
'WindowsCMakeBuilder',
'Wasm32Builder',
]
prodBuilders = ['AndroidBuilder_v7',
'AndroidBuilder_v8',
'AndroidBuilder_v8Qt6',
'LinuxCMakeBuilder',
'LinuxCMakeBuilderQt6',
'WindowsCMakeBuilder',
]
buildersDeployCode = ['DocsGenerator']
buildersReleaseCode = ['prodDeployer']
buildersRepo = ['RepoGen']
self.masterConf['schedulers'] = self.shedulers
self.masterConf['schedulers'] += [
schedulers.AnyBranchScheduler(
name='githubTest',
builderNames=buildersCode,
properties={
'clean': True,
'test': True,
'release': False,
'deploy': False
},
treeStableTimer=60
),
schedulers.AnyBranchScheduler(
name='githubDeploy',
builderNames=buildersDeployCode,
properties={
'clean': True,
'test': True,
'release': False,
'deploy': True,
'copyFolder': 'Distro'
},
treeStableTimer=60
),
schedulers.SingleBranchScheduler(
name='release',
change_filter=util.ChangeFilter(branch="prod"),
builderNames=buildersReleaseCode,
properties={
'copyFolder': 'Distro',
'prodName': 'prod.deb'
},
treeStableTimer=1200
),
schedulers.SingleBranchScheduler(
name='production',
change_filter=util.ChangeFilter(branch="prod"),
builderNames=prodBuilders,
properties={
'clean': True,
'test': True,
'release': False,
'deploy': True,
'copyFolder': 'Distro'
},
treeStableTimer=70
),
schedulers.Triggerable(name="repogen",
builderNames=buildersRepo),
schedulers.Triggerable(name="releaser",
builderNames=buildersReleaseCode)
]
return self.getMasterConf()