def run(self): self.stdio_log = yield self.addLog("stdio") try: gitInstalled = yield self.checkFeatureSupport() if not gitInstalled: raise WorkerSetupError("git is not installed on worker") yield self._downloadSshPrivateKeyIfNeeded() ret = yield self._doPush() yield self._removeSshPrivateKeyIfNeeded() return ret except Exception as e: yield self._removeSshPrivateKeyIfNeeded() raise e
def run_vc(self, branch, revision, patch): self.revision = revision self.stdio_log = yield self.addLogForRemoteCommands("stdio") installed = yield self.checkDarcs() if not installed: raise WorkerSetupError("Darcs is not installed on worker") patched = yield self.sourcedirIsPatched() if patched: yield self.copy() yield self._getAttrGroupMember('mode', self.mode)() if patch: yield self.patch(patch) yield self.parseGotRevision() return results.SUCCESS
def run_vc(self, branch, revision, patch): self.branch = branch self.revision = revision self.stdio_log = yield self.addLogForRemoteCommands("stdio") self.method = self._getMethod() installed = yield self.checkCvs() if not installed: raise WorkerSetupError("CVS is not installed on worker") yield self.checkLogin() patched = yield self.sourcedirIsPatched() if patched: yield self.purge(False) yield self._getAttrGroupMember('mode', self.mode)() if patch: yield self.patch(patch) yield self.parseGotRevision() return results.SUCCESS
def checkWorkerHasCommand(self, command): if not self.workerVersion(command): message = "worker is too old, does not know about {}".format( command) raise WorkerSetupError(message)
def run(self): self.checkWorkerHasCommand("uploadFile") self.stdio_log = yield self.addLog("stdio") source = self.workersrc masterdest = self.masterdest # we rely upon the fact that the buildmaster runs chdir'ed into its # basedir to make sure that relative paths in masterdest are expanded # properly. TODO: maybe pass the master's basedir all the way down # into the BuildStep so we can do this better. masterdest = os.path.expanduser(masterdest) log.msg("FileUpload started, from worker %r to master %r" % (source, masterdest)) if self.description is None: self.description = [ 'uploading {}'.format(os.path.basename(source)) ] if self.descriptionDone is None: self.descriptionDone = self.description if self.url is not None: urlText = self.urlText if urlText is None: urlText = os.path.basename(masterdest) yield self.addURL(urlText, self.url) # we use maxsize to limit the amount of data on both sides fileWriter = remotetransfer.FileWriter(masterdest, self.maxsize, self.mode) if self.keepstamp and self.workerVersionIsOlderThan( "uploadFile", "2.13"): m = (("This worker ({}) does not support preserving timestamps. " "Please upgrade the worker.").format(self.build.workername)) raise WorkerSetupError(m) # default arguments args = { 'workdir': self.workdir, 'writer': fileWriter, 'maxsize': self.maxsize, 'blocksize': self.blocksize, 'keepstamp': self.keepstamp, } if self.workerVersionIsOlderThan('uploadFile', '3.0'): args['slavesrc'] = source else: args['workersrc'] = source cmd = makeStatusRemoteCommand(self, 'uploadFile', args) res = yield self.runTransferCommand(cmd, fileWriter) log.msg("File '{}' upload finished with results {}".format( os.path.basename(self.workersrc), str(res))) return res