for line in lines:
log.write(line)
+def feedback(msg, tag, tagger, mygerrit):
+ """ post message back to gerrit and send mail to tag owner """
+ mygerrit.review(commit = GERRIT_PATCHSET_REVISION, message = msg)
+ msg = 'Hi, %s,\n\n' % tagger['author'] + msg + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
+ prepare_mail("%s.mail.env" % random.random(), TITLE_FAILED % (tag, GERRIT_PROJECT), msg, NOREPLY_EMAIL_SENDER, tagger['email'])
+
def end(result = 'success'):
print 'execute result: %s' % result
db = mysql.Database(MYSQL_HOSTNAME, MYSQL_USERNAME, MYSQL_PASSWORD, MYSQL_DB_NAME)
print 'changes file status:', changelog, st, msg
if msg:
- mygerrit.review(commit = GERRIT_PATCHSET_REVISION, message = msg)
- msg = 'Hi, %s,\n\n' % tagger['author'] + msg + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
- prepare_mail("%s.mail.env" % random.random(), title, msg, NOREPLY_EMAIL_SENDER, tagger['email'])
+ feedback(msg, tag, tagger, mygerrit)
def main():
# global variable
if tagger.has_key('author') and tagger.has_key('email'):
tagcheckmsg = 'Hi, %s,\n\n' % tagger['author'] + tagcheck['message'] + '\n\n----------------------------------------------------------------\nAutomatically generated by backend service.\nPlease DO NOT Reply!'
prepare_mail("%s.mail.env" % random.random(), tagcheck['title'], tagcheckmsg, NOREPLY_EMAIL_SENDER, tagger['email'])
- end('failure')
+ end('success')
packagingdir = utils.parse_link('%s/%s' % (prjdir, 'packaging'))
print('packaging dir is %s/%s' % (prjdir, packagingdir))
specfile = utils.find_spec('%s/%s' % (prjdir, packagingdir))
if not specfile:
specfile = '%s/%s/%s.spec' % (prjdir, packagingdir, prj)
+ if not os.path.isfile(specfile):
+ msg = "The tag %s pushed, but packaging directory contains multiply spec files, backend service can not decide which spec file to use. Please use OBS_PACKAGE parameter in scm/git-obs-mapping project to specify the target spec file or contact system administrator for more details." % tag
+ feedback(msg, tag, tagger, mygerrit)
+ end('failure')
+
print('specfile %s' % specfile)
+ # check whether spec file exists
if not os.path.isfile(specfile):
- continue
+ msg = "The tag %s pushed, but backend service can not find %s under packaging directory, which maybe caused by OBS_PACKAGE parameter in scm/git-obs-mapping project. Please correct it or contact system administrator for more details." % (tag, os.path.basename(specfile))
+ feedback(msg, tag, tagger, mygerrit)
+ end('failure')
+
try:
# use gbp to parse specfile
spec = gbp.rpm.parse_spec(specfile)
runner.show('gbs export --spec=%s -o %s' % (specfile, outdir))
except Exception, exc:
print('gbp parse spec failed. %s' % exc)
+ msg = "The tag %s pushed, but backend service parsed %s failed. Please make sure (gbs export) can work in this project." % (tag, os.path.basename(specfile))
+ feedback(msg, tag, tagger, mygerrit)
end('failure')
tarballdir = os.path.join(outdir, os.listdir(outdir)[0])