PR#674: store git commit hash to build.source

Merges #674
https://pagure.io/koji/pull-request/674

Fixes: #550
https://pagure.io/koji/issue/550
Have koji store the git hash
This commit is contained in:
Mike McLean 2017-12-11 12:50:49 -05:00
commit cedd6eef7f
2 changed files with 29 additions and 0 deletions

View file

@ -868,6 +868,10 @@ class BuildTask(BaseTaskHandler):
h = self.readSRPMHeader(srpm)
data = koji.get_header_fields(h,['name','version','release','epoch'])
data['task_id'] = self.id
if getattr(self, 'source', False):
data['source'] = self.source['source']
data['extra'] = {'source': {'original_url': self.source['url']}}
extra_arches = None
self.logger.info("Reading package config for %(name)s" % data)
pkg_cfg = self.session.getPackageConfig(dest_tag,data['name'],event=self.event_id)
@ -933,6 +937,10 @@ class BuildTask(BaseTaskHandler):
parent=self.id)
# wait for subtask to finish
result = self.wait(task_id)[task_id]
if 'source' in result:
self.source = result['source']
else:
self.logger.warning('subtask did not provide source data')
srpm = result['srpm']
return srpm
@ -4559,12 +4567,14 @@ class BuildSRPMFromSCMTask(BaseBuildTask):
brootid = broot.id
log_files = glob.glob('%s/*.log' % broot.resultdir())
source = scm.get_source()
broot.expire()
return {'srpm': "%s/%s" % (uploadpath, srpm_name),
'logs': ["%s/%s" % (uploadpath, os.path.basename(f))
for f in log_files],
'brootid': brootid,
'source': source,
}
class TagNotificationTask(BaseTaskHandler):

View file

@ -32,6 +32,7 @@ import urlparse
from fnmatch import fnmatch
import base64
import time
import subprocess
import sys
import traceback
import errno
@ -501,8 +502,26 @@ class SCM(object):
rel_path = '../' * len(path_comps.split('/'))
os.symlink(rel_path + 'common', '%s/../common' % sourcedir)
self.sourcedir = sourcedir
return sourcedir
def get_source(self):
r = {
'url': self.url,
'source': '',
}
if self.scmtype.startswith('GIT'):
cmd = ['git', 'rev-parse', 'HEAD']
fragment = subprocess.check_output(cmd, cwd=self.sourcedir).strip()
scheme = self.scheme[:-3]
netloc = self.host
path = self.repository
query = self.module
r['source'] = urlparse.urlunsplit([scheme, netloc, path, query, fragment])
else:
# just use the same url
r['source'] = self.url
return r
## END kojikamid dup