Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
    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
Пример #4
0
 def checkWorkerHasCommand(self, command):
     if not self.workerVersion(command):
         message = "worker is too old, does not know about {}".format(
             command)
         raise WorkerSetupError(message)
Пример #5
0
    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