diff options
-rw-r--r-- | buildbot_gentoo_ci/db/model.py | 1 | ||||
-rw-r--r-- | buildbot_gentoo_ci/db/versions.py | 6 | ||||
-rw-r--r-- | buildbot_gentoo_ci/steps/version.py | 35 |
3 files changed, 39 insertions, 3 deletions
diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py index b91f158..aa4eabc 100644 --- a/buildbot_gentoo_ci/db/model.py +++ b/buildbot_gentoo_ci/db/model.py @@ -240,6 +240,7 @@ class Model(base.DBConnectorComponent): sa.ForeignKey('packages.uuid', ondelete='CASCADE'), nullable=False), sa.Column('file_hash', sa.String(255), nullable=False), + sa.Column('commit_id', sa.String(255), nullable=False), sa.Column('deleted', sa.Boolean, default=False), sa.Column('deleted_at', sa.DateTime, nullable=True), ) diff --git a/buildbot_gentoo_ci/db/versions.py b/buildbot_gentoo_ci/db/versions.py index 25f2061..df9b4d3 100644 --- a/buildbot_gentoo_ci/db/versions.py +++ b/buildbot_gentoo_ci/db/versions.py @@ -56,14 +56,15 @@ class VersionsConnectorComponent(base.DBConnectorComponent): return res @defer.inlineCallbacks - def addVersion(self, name, package_uuid, file_hash): + def addVersion(self, name, package_uuid, file_hash, commit_id): def thd(conn, no_recurse=False): try: tbl = self.db.model.versions q = tbl.insert() r = conn.execute(q, dict(name=name, package_uuid=package_uuid, - file_hash=file_hash)) + file_hash=file_hash, + commit_id=commit_id)) except (sa.exc.IntegrityError, sa.exc.ProgrammingError): uuid = None else: @@ -107,6 +108,7 @@ class VersionsConnectorComponent(base.DBConnectorComponent): name=row.name, package_uuid=row.package_uuid, file_hash=row.file_hash, + commit_id=row.commit_id, deleted=row.deleted, deleted_at=row.deleted_at ) diff --git a/buildbot_gentoo_ci/steps/version.py b/buildbot_gentoo_ci/steps/version.py index 5430e6e..d47a253 100644 --- a/buildbot_gentoo_ci/steps/version.py +++ b/buildbot_gentoo_ci/steps/version.py @@ -3,6 +3,7 @@ import re import os +import git from portage.xml.metadata import MetaDataXML from portage.checksum import perform_checksum @@ -61,10 +62,12 @@ class AddVersion(BuildStep): self.version_data['name'] = self.getProperty("version") self.version_data['package_uuid'] = self.getProperty("package_data")['uuid'] self.version_data['file_hash'] = self.getProperty("ebuild_file_hash") + self.version_data['commit_id'] = self.getProperty("commit_id") self.version_data['uuid'] = yield self.gentooci.db.versions.addVersion( self.version_data['name'], self.version_data['package_uuid'], - self.version_data['file_hash'] + self.version_data['file_hash'], + self.version_data['commit_id'] ) print(self.version_data) self.setProperty("version_data", self.version_data, 'version_data') @@ -98,6 +101,33 @@ class GetAuxMetadata(BuildStep): yield portdbapi.portdbapi_instances.remove(self.myportdb) return SUCCESS +class GetCommitdata(BuildStep): + + name = 'GetCommitdata' + description = 'Running' + descriptionDone = 'Ran' + descriptionSuffix = None + haltOnFailure = True + flunkOnFailure = True + + def __init__(self, **kwargs): + super().__init__(**kwargs) + + @defer.inlineCallbacks + def run(self): + #FIXME: Could be a better way to get the log + git_log_ebuild = '' + g = git.Git(self.getProperty("repository_path")) + index = 1 + git_log_dict = {} + git_log = yield g.log('-n 1', self.getProperty("ebuild_file")) + print(git_log) + for line in git_log.splitlines(): + git_log_dict[index] = line + index = index + 1 + self.setProperty('commit_id', re.sub('commit ', '', git_log_dict[1]), 'commit_id') + return SUCCESS + class AddVersionKeyword(BuildStep): name = 'AddVersionKeyword' @@ -178,6 +208,7 @@ class CheckPathHash(BuildStep): self.ebuild_file_hash = None self.setProperty('ebuild_file', self.ebuild_file, 'ebuild_file') self.setProperty('ebuild_file_hash', self.ebuild_file_hash, 'ebuild_file_hash') + self.setProperty('repository_path', self.repository_path, 'repository_path') return SUCCESS class TriggerBuildCheck(BuildStep): @@ -248,6 +279,7 @@ class CheckV(BuildStep): addStepVData.append(DeleteOldVersion()) if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is not None: if self.getProperty("ebuild_file_hash") != self.getProperty("old_version_data")['file_hash']: + addStepVData.append(GetCommitdata()) addStepVData.append(AddVersion()) addStepVData.append(GetAuxMetadata()) addStepVData.append(AddVersionKeyword()) @@ -256,6 +288,7 @@ class CheckV(BuildStep): else: return SUCCESS if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is None: + addStepVData.append(GetCommitdata()) addStepVData.append(AddVersion()) addStepVData.append(GetAuxMetadata()) addStepVData.append(AddVersionKeyword()) |