From: hyokeun Date: Mon, 21 Aug 2017 06:30:35 +0000 (+0900) Subject: TPE-202 Retry git checkout if failed in submit job X-Git-Tag: submit/trunk/20190927.012743~317^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7c4b888dc848b587f62dbda02148938b2780b5c3;p=services%2Fjenkins-scripts.git TPE-202 Retry git checkout if failed in submit job Change-Id: I839a4d0210849d0ab5bf8be1b79d40fa9bcbc16e --- diff --git a/job_submit.py b/job_submit.py index 9be7a47..e701ce0 100644 --- a/job_submit.py +++ b/job_submit.py @@ -27,6 +27,7 @@ import json import base64 import re import ast +import shutil import xml.etree.cElementTree as ElementTree from xml.sax.saxutils import escape from time import sleep @@ -312,6 +313,23 @@ def main(build_type, build, event, sr_count): return 1 mygit = Git(prjdir) + tag = find_submit_tag(event, mygit) + if not tag: + print '\nThis commit don\'t contain submit/*/* tag, exit now' + return 0 + + # checkout submit tag + try: + mygit.checkout(tag) + except Exception as err: + print 'Retrying git cloning due to checkout failure. %s' % repr(err) + shutil.rmtree(prjdir) + if not clone_gitproject(event['project'], prjdir): + print >> sys.stderr, 'Error cloning %s' % event['project'] + return 1 + mygit = Git(prjdir) + mygit.checkout(tag) + # check whether tag name is start with 'submit/' if not event['refname'].startswith('refs/tags/submit/'): print '\nREFNAME "%s" isn\'t start with refs/tags/submit, exit now'\ @@ -331,11 +349,6 @@ def main(build_type, build, event, sr_count): mygerrit = Gerrit(event['hostname'], event['username'], \ event['sshport'], int(os.getenv('GERRIT_SILENT_MODE'))) - tag = find_submit_tag(event, mygit) - if not tag: - print '\nThis commit don\'t contain submit/*/* tag, exit now' - return 0 - result_str, cd_err, cd_ret = mygit._git_inout('for-each-ref', ['--format=%(tagger)', event['refname']]) lparen = result_str.find('<') rparen = result_str.find('>') @@ -363,9 +376,6 @@ def main(build_type, build, event, sr_count): packagingdir = utils.parse_link('%s/%s' % (prjdir, 'packaging')) print 'packaging dir is %s/%s' % (prjdir, packagingdir) - # checkout submit tag - mygit.checkout(tag) - tagger = mygit.get_tag(tag) # get project mappings from git-obs-mapping and git-ref-mapping