aiaiaicmd = '%s/aiaiai/aiaiai-test-patchset' % JENKINS_HOME
- if utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), GERRIT_PROJECT, giturl)):
- shutil.copytree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir, True)
+ # update local git tree from remote
+ try:
+ if os.path.exists(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT)):
+ print '\nuse local repo as reference to clone'
+ if runner.show('git clone %s/%s --reference %s %s' % (giturl, GERRIT_PROJECT, os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), '%s/%s' % (tmpdir,GERRIT_PROJECT)))[0]:
+ print 'use local repo as reference to clone: Failed.'
+ shutil.rmtree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT))
+ except Exception, ex:
+ print '\nExcept occur when use reference repo to clone code'
+ print ex
if not utils.retry(git.update_git_project, (tmpdir, GERRIT_PROJECT, giturl)):
end(1)
if line:
msg.append(line)
if msg:
- runner.quiet('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, 'aiaiai check result:\n- '+'\n'.join(msg)))
+ runner.show('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, 'aiaiai check result:\n- '+'\n'.join(msg)))
end()
if not utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), mappingprj, giturl)):
end(1)
- if utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), GERRIT_PROJECT, giturl)):
- shutil.copytree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir, True)
+ # update local git tree from remote
+ try:
+ if os.path.exists(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT)):
+ print '\nuse local repo as reference to clone'
+ if runner.show('git clone %s/%s --reference %s %s' % (giturl, GERRIT_PROJECT, os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), '%s/%s' % (tmpdir,GERRIT_PROJECT)))[0]:
+ print 'use local repo as reference to clone: Failed.'
+ shutil.rmtree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT))
+ except Exception, ex:
+ print '\nExcept occur when use reference repo to clone code'
+ print ex
if not utils.retry(git.update_git_project, (tmpdir, GERRIT_PROJECT, giturl)):
end(1)
for arch in status[repo]:
msg = msg + '\n\n %-15s%-15s%-15s' %(repo, arch, status[repo][arch])
print msg
- runner.quiet('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, msg))
+ runner.show('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, msg))
end()
msger.debug('run command: %s' % cmdln)
with Workdir(self.path):
- ret, outs = runner.runtool(cmdln)
+ ret, outs = runner.show(cmdln)
#if ret:
# raise errors.GitError("command error for: %s" % cmdln)
def checkout(self, *args):
"""checkout repository branch 'br'
"""
- print('git checkout %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('checkout', list(args))
- print(outs)
def clean_branch(self, br):
"""Clean up repository branch 'br'
def show(self, *args):
"""show commit details
"""
- print('git show %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('show', list(args))
- print(outs)
if not ret:
return outs.splitlines()
def fetch(self, *args):
"""Download objects and refs from another repository
"""
- print('git fetch %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('fetch', list(args))
- print(outs)
if ret:
raise errors.GitError("git fetch error")
def describe(self, *args):
"""Show the most recent tag that is reachable from a commit
"""
- print('git describe %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('describe', list(args))
- print(outs)
if not ret:
return outs.strip()
def pull(self, *args):
"""Fetch from and merge with another repository or a local branch
"""
- print('git pull %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('pull', list(args))
- print(outs)
if ret:
return False
else:
return True
def clean(self, *args):
- print('git clean %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('clean', list(args))
- print(outs)
def get_base_commit(self, commit):
out = self._exec_git('log',
return out[1].strip()
def format_patch(self, *args):
- print('git format-patch %s' % ' '.join(args))
with Workdir(self.path):
ret, outs = self._exec_git('format-patch', list(args))
- print(outs)
if not ret:
return outs.splitlines()
def branch_contains(self, cmitid):
- print('git branch --contains %s' % cmitid)
with Workdir(self.path):
ret, outs = self._exec_git('branch --contains', [cmitid])
- print(outs)
if not ret:
branchs = []
for br in outs.splitlines():
- print 'br', type(br),br
if br.startswith('* '):
branchs.append(br[len('* '):])
else:
branchs.append(br)
- print 'branchs', branchs
- print(branchs)
+ print 'git branch contains %s' % branchs
return branchs
else:
return None
except errors.GitError, err:
print('git execption: ', err)
shutil.rmtree(prjdir)
- ret, outs = runner.runtool('git clone %s/%s %s' % (giturl, prj, prj))
- print('git clone %s/%s %s\n%s' % (giturl, prj, prj, outs))
+ ret, outs = runner.show('git clone %s/%s %s' % (giturl, prj, prj))
if ret !=0:
result = False
else:
if not gitprj.pull():
shutil.rmtree(prjdir)
- ret, outs = runner.runtool('git clone %s/%s %s' % (giturl, prj, prj))
- print('git clone %s/%s %s\n%s' % (giturl, prj, prj, outs))
+ ret, outs = runner.show('git clone %s/%s %s' % (giturl, prj, prj))
if ret !=0:
result = False
else:
- ret, outs = runner.runtool('git clone %s/%s %s' % (giturl, prj, prj))
- print('git clone %s/%s %s\n%s' % (giturl, prj, prj, outs))
+ ret, outs = runner.show('git clone %s/%s %s' % (giturl, prj, prj))
if ret !=0:
result = False
end(1)
# update local git tree from remote
- if utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), GERRIT_PROJECT, giturl)):
- print('Copy %s to %s' % (os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir))
- shutil.copytree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir, True)
+ try:
+ if os.path.exists(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT)):
+ print '\nuse local repo as reference to clone'
+ if runner.show('git clone %s/%s --reference %s %s' % (giturl, GERRIT_PROJECT, os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), '%s/%s' % (tmpdir,GERRIT_PROJECT)))[0]:
+ print 'use local repo as reference to clone: Failed.'
+ shutil.rmtree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT))
+ except Exception, ex:
+ print '\nExcept occur when use reference repo to clone code'
+ print ex
if not utils.retry(git.update_git_project, (tmpdir, GERRIT_PROJECT, giturl)):
end(1)
print('\n-------------------------------\ncheck obs target result:\n%s' % checkobsmsg)
print('\n-------------------------------\ncheck specfile result:\n%s' % checkspecmsg)
- runner.quiet('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, checkobsmsg))
- runner.quiet('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, checkspecmsg))
+ runner.show('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, checkobsmsg))
+ runner.show('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, checkspecmsg))
end()
if catch != 3:
os.close(dev_null)
+ #print 'execute cmd: %s\nreturncode: %s\n%s' %(cmdln_or_args, process.returncode, out)
return (process.returncode, out)
def show(cmdln_or_args):
msg += '\n | %s' % line
msg += '\n +----------------'
- msger.verbose(msg)
- return rcode
+ print msg
+ return rcode, out
def outs(cmdln_or_args, catch=1):
# get the outputs of tools
end('success')
# update local git tree from remote
- if utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), GERRIT_PROJECT, giturl)):
- print('Copy %s to %s' % (os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir))
- shutil.copytree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), prjdir, True)
+ try:
+ if utils.retry(git.update_git_project, (os.path.join(JENKINS_HOME, 'git'), GERRIT_PROJECT, giturl)):
+ if os.path.exists(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT)):
+ print '\nuse local repo as reference to clone'
+ if runner.show('git clone %s/%s --reference %s %s' % (giturl, GERRIT_PROJECT, os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT), '%s/%s' % (tmpdir,GERRIT_PROJECT)))[0]:
+ print 'use local repo as reference to clone: Failed.'
+ shutil.rmtree(os.path.join(JENKINS_HOME, 'git', GERRIT_PROJECT))
+ except Exception, ex:
+ print '\nExcept occur when use reference repo to clone code'
+ print ex
if not utils.retry(git.update_git_project, (tmpdir, GERRIT_PROJECT, giturl)):
end('retry')
# use gbs export to generate tarball
outdir = tempfile.mkdtemp(prefix=tmpdir+'/')
with utils.Workdir(prjdir):
- runner.quiet('gbs export --spec=%s -o %s' % (specfile, outdir))
+ runner.show('gbs export --spec=%s -o %s' % (specfile, outdir))
print '\ngbs export --spec=%s -o %s' % (specfile, outdir)
tarballdir = os.path.join(outdir, os.listdir(outdir)[0])
if GERRIT_CHANGE_NUMBER and GERRIT_CHANGE_NUMBER:
comment = 'A request has been created to submit this commit to OBS %s project.\n- Submitter: %s <%s>\nTag: %s\nRequest ID: %s' % (' '.join(dstprjlist), tagger['author'], tagger['email'], tag, ' '.join(reqlist))
print '%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, comment)
- runner.quiet('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, comment))
+ runner.show('%s %s %s,%s --message \'"%s"\'' % (gerritcmd, 'review', GERRIT_CHANGE_NUMBER, GERRIT_PATCHSET_NUMBER, comment))
else:
print 'GERRIT_CHANGE_NUMBER %s and GERRIT_CHANGE_NUMBER %s is empty.' % (GERRIT_CHANGE_NUMBER, GERRIT_CHANGE_NUMBER)
end('success')