4
0
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:
Andrei Yankovich 2020-02-03 14:48:36 +03:00
parent 9f9f8ea5cc
commit 80de3402f0
4 changed files with 133 additions and 11 deletions

@ -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

@ -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/"
),
]