mirror of
https://github.com/QuasarApp/QuasarAppCI.git
synced 2025-05-03 08:49:38 +00:00
added repogen Worker
This commit is contained in:
parent
9f9f8ea5cc
commit
80de3402f0
@ -22,6 +22,7 @@
|
||||
"secretManager.py",
|
||||
"NPM.py",
|
||||
"git/gitBin.sh",
|
||||
"asssetsinstaller.py"
|
||||
"asssetsinstaller.py",
|
||||
"qifRepogen.py"
|
||||
]
|
||||
}
|
||||
|
@ -24,27 +24,32 @@ class BuildBotShedulers(BuildBotModule):
|
||||
|
||||
def initScheduler(self):
|
||||
|
||||
buildersCode = ['LinuxBuilder',
|
||||
'AndroidBuilder',
|
||||
'WindowsBuilder',
|
||||
]
|
||||
|
||||
buildersRepo = ['LinuxBuilder',
|
||||
'WindowsBuilder',
|
||||
]
|
||||
|
||||
self.masterConf['schedulers'] = self.shedulers + [
|
||||
schedulers.AnyBranchScheduler(
|
||||
name='github',
|
||||
change_filter=util.ChangeFilter(project_re="qmake-*"),
|
||||
builderNames=['LinuxBuilder',
|
||||
'AndroidBuilder',
|
||||
'WindowsBuilder',
|
||||
],
|
||||
builderNames=buildersCode,
|
||||
properties={
|
||||
'clean': True,
|
||||
'test': True,
|
||||
'release': False,
|
||||
'deploy': False,
|
||||
'Linux': True,
|
||||
'Windows': True,
|
||||
'Android': True
|
||||
|
||||
'deploy': False
|
||||
},
|
||||
treeStableTimer=None
|
||||
),
|
||||
|
||||
schedulers.Triggerable(name="repogen",
|
||||
builderNames=buildersRepo)
|
||||
|
||||
]
|
||||
|
||||
return self.getMasterConf()
|
||||
|
@ -5,11 +5,13 @@ from BuildBotLib.basemodule import BaseModule
|
||||
from buildbot.plugins import util, steps
|
||||
import datetime
|
||||
from BuildBotLib.secretManager import SecretManager
|
||||
import hashlib
|
||||
|
||||
|
||||
class Make(BaseModule):
|
||||
def __init__(self, platform):
|
||||
BaseModule.__init__(self, platform)
|
||||
self.tempRepoDir = ""
|
||||
|
||||
def isClean(self, step):
|
||||
return step.getProperty('clean')
|
||||
@ -29,10 +31,23 @@ class Make(BaseModule):
|
||||
|
||||
return repo[repo.rfind('/'): len(repo) - 4] + "/" + now
|
||||
|
||||
def tempDirPrivate(self, props):
|
||||
repo = str(props.getProperty('repository'))
|
||||
now = datetime.datetime.now().strftime("(%H_%M_%S)_%m-%d-%Y")
|
||||
|
||||
m = hashlib.md5()
|
||||
m.update(repo[repo.rfind('/'): len(repo) - 4] + "/" + now)
|
||||
|
||||
return m.hexdigest()
|
||||
|
||||
def destDir(self, props):
|
||||
|
||||
return self.home + '/shared/' + self.destDirPrivate(props)
|
||||
|
||||
def tempDir(self, props):
|
||||
self.tempRepoDir = self.home + '/rTemp/' + self.tempDirPrivate(props)
|
||||
return self.tempRepoDir
|
||||
|
||||
def destDirUrl(self, props):
|
||||
return "http://quasarapp.ddns.net:3031" + self.destDirPrivate(props)
|
||||
|
||||
@ -157,6 +172,26 @@ class Make(BaseModule):
|
||||
'release project',
|
||||
self.isRelease)]
|
||||
|
||||
if platform != BaseModule.P_Android:
|
||||
|
||||
res += steps.DirectoryUpload(
|
||||
workersrc=util.Interpolate('%(prop:repoFolder)s'),
|
||||
masterdest=self.getWraper(self.tempDir),
|
||||
doStepIf=self.getWraper(self.isRelease),
|
||||
name='copy repository files',
|
||||
description='copy repository files to temp folder',
|
||||
)
|
||||
|
||||
@util.renderer
|
||||
def tempDir(props):
|
||||
return self.tempRepoDir
|
||||
|
||||
res += [steps.Trigger(schedulerNames=['repogen'],
|
||||
doStepIf=lambda step: self.isRelease(step),
|
||||
set_properties={"tempPackage": self.tempDir,
|
||||
"platform": platform}
|
||||
)]
|
||||
|
||||
res += [self.generateStep(self.makeTarget('distclean'),
|
||||
platform,
|
||||
'clear all data',
|
||||
@ -224,5 +259,9 @@ class Make(BaseModule):
|
||||
label='Folder with buildet data',
|
||||
default="Distro"
|
||||
),
|
||||
|
||||
util.StringParameter(
|
||||
name='repoFolder',
|
||||
label='Folder with repository data',
|
||||
default="Repo"
|
||||
),
|
||||
]
|
||||
|
77
BuildBotLib/qifRepogen.py
Normal file
77
BuildBotLib/qifRepogen.py
Normal file
@ -0,0 +1,77 @@
|
||||
# This Python file uses the following encoding: utf-8
|
||||
from BuildBotLib.basemodule import BaseModule
|
||||
from buildbot.plugins import util, steps
|
||||
|
||||
|
||||
class QIFRepogen (BaseModule):
|
||||
def __init__(self):
|
||||
BaseModule.init(self, BaseModule.P_Linux)
|
||||
self.repogen = "repogen"
|
||||
|
||||
def getFactory(self):
|
||||
factory = super().getFactory()
|
||||
|
||||
def generateRepogenCmd(props):
|
||||
repoLocation = props.getProperty('repoLocation') + "/"
|
||||
repoLocation += props.getProperty('platform')
|
||||
tempPackage = props.getProperty('tempPackage')
|
||||
|
||||
cmd = [self.repogen,
|
||||
"--update-new-components",
|
||||
"-p",
|
||||
tempPackage,
|
||||
repoLocation
|
||||
]
|
||||
|
||||
return cmd
|
||||
|
||||
factory.addStep(
|
||||
steps.ShellCommand(
|
||||
command=self.getWraper(generateRepogenCmd),
|
||||
haltOnFailure=True,
|
||||
name='Generate repository',
|
||||
description='Generate repository',
|
||||
)
|
||||
)
|
||||
|
||||
def generateRemoveCmd(props):
|
||||
tempPackage = props.getProperty('tempPackage')
|
||||
|
||||
cmd = ["rm",
|
||||
"-rdf",
|
||||
tempPackage
|
||||
]
|
||||
|
||||
return cmd
|
||||
|
||||
factory.addStep(
|
||||
steps.ShellCommand(
|
||||
command=self.getWraper(generateRemoveCmd),
|
||||
haltOnFailure=True,
|
||||
name='Remove old Data',
|
||||
description='Remove old Data',
|
||||
)
|
||||
)
|
||||
|
||||
return factory
|
||||
|
||||
def getPropertyes(self):
|
||||
return [
|
||||
util.StringParameter(
|
||||
name='tempPackage',
|
||||
label='Folder with temp value for packing',
|
||||
default=""
|
||||
),
|
||||
|
||||
util.StringParameter(
|
||||
name='platform',
|
||||
label='target platform (linux of windows)',
|
||||
default=BaseModule.P_Linux
|
||||
),
|
||||
|
||||
util.StringParameter(
|
||||
name='repoLocation',
|
||||
label='repository location',
|
||||
default=self.home + "/repo/"
|
||||
),
|
||||
]
|
Loading…
x
Reference in New Issue
Block a user