commit:     f60d63024794752620e12f445e13d6a317030de3
Author:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
AuthorDate: Sun Feb 28 23:25:37 2021 +0000
Commit:     Magnus Granberg <zorry <AT> gentoo <DOT> org>
CommitDate: Sun Feb 28 23:25:37 2021 +0000
URL:        
https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=f60d6302

Add git log commit id to version data

Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>

 buildbot_gentoo_ci/db/model.py      |  1 +
 buildbot_gentoo_ci/db/versions.py   |  6 ++++--
 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())

Reply via email to