Gentoo Archives: gentoo-commits

From: Magnus Granberg <zorry@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/tinderbox-cluster:master commit in: buildbot_gentoo_ci/db/, buildbot_gentoo_ci/steps/
Date: Sun, 28 Feb 2021 23:26:23
Message-Id: 1614554737.f60d63024794752620e12f445e13d6a317030de3.zorry@gentoo
1 commit: f60d63024794752620e12f445e13d6a317030de3
2 Author: Magnus Granberg <zorry <AT> gentoo <DOT> org>
3 AuthorDate: Sun Feb 28 23:25:37 2021 +0000
4 Commit: Magnus Granberg <zorry <AT> gentoo <DOT> org>
5 CommitDate: Sun Feb 28 23:25:37 2021 +0000
6 URL: https://gitweb.gentoo.org/proj/tinderbox-cluster.git/commit/?id=f60d6302
7
8 Add git log commit id to version data
9
10 Signed-off-by: Magnus Granberg <zorry <AT> gentoo.org>
11
12 buildbot_gentoo_ci/db/model.py | 1 +
13 buildbot_gentoo_ci/db/versions.py | 6 ++++--
14 buildbot_gentoo_ci/steps/version.py | 35 ++++++++++++++++++++++++++++++++++-
15 3 files changed, 39 insertions(+), 3 deletions(-)
16
17 diff --git a/buildbot_gentoo_ci/db/model.py b/buildbot_gentoo_ci/db/model.py
18 index b91f158..aa4eabc 100644
19 --- a/buildbot_gentoo_ci/db/model.py
20 +++ b/buildbot_gentoo_ci/db/model.py
21 @@ -240,6 +240,7 @@ class Model(base.DBConnectorComponent):
22 sa.ForeignKey('packages.uuid', ondelete='CASCADE'),
23 nullable=False),
24 sa.Column('file_hash', sa.String(255), nullable=False),
25 + sa.Column('commit_id', sa.String(255), nullable=False),
26 sa.Column('deleted', sa.Boolean, default=False),
27 sa.Column('deleted_at', sa.DateTime, nullable=True),
28 )
29
30 diff --git a/buildbot_gentoo_ci/db/versions.py b/buildbot_gentoo_ci/db/versions.py
31 index 25f2061..df9b4d3 100644
32 --- a/buildbot_gentoo_ci/db/versions.py
33 +++ b/buildbot_gentoo_ci/db/versions.py
34 @@ -56,14 +56,15 @@ class VersionsConnectorComponent(base.DBConnectorComponent):
35 return res
36
37 @defer.inlineCallbacks
38 - def addVersion(self, name, package_uuid, file_hash):
39 + def addVersion(self, name, package_uuid, file_hash, commit_id):
40 def thd(conn, no_recurse=False):
41 try:
42 tbl = self.db.model.versions
43 q = tbl.insert()
44 r = conn.execute(q, dict(name=name,
45 package_uuid=package_uuid,
46 - file_hash=file_hash))
47 + file_hash=file_hash,
48 + commit_id=commit_id))
49 except (sa.exc.IntegrityError, sa.exc.ProgrammingError):
50 uuid = None
51 else:
52 @@ -107,6 +108,7 @@ class VersionsConnectorComponent(base.DBConnectorComponent):
53 name=row.name,
54 package_uuid=row.package_uuid,
55 file_hash=row.file_hash,
56 + commit_id=row.commit_id,
57 deleted=row.deleted,
58 deleted_at=row.deleted_at
59 )
60
61 diff --git a/buildbot_gentoo_ci/steps/version.py b/buildbot_gentoo_ci/steps/version.py
62 index 5430e6e..d47a253 100644
63 --- a/buildbot_gentoo_ci/steps/version.py
64 +++ b/buildbot_gentoo_ci/steps/version.py
65 @@ -3,6 +3,7 @@
66
67 import re
68 import os
69 +import git
70
71 from portage.xml.metadata import MetaDataXML
72 from portage.checksum import perform_checksum
73 @@ -61,10 +62,12 @@ class AddVersion(BuildStep):
74 self.version_data['name'] = self.getProperty("version")
75 self.version_data['package_uuid'] = self.getProperty("package_data")['uuid']
76 self.version_data['file_hash'] = self.getProperty("ebuild_file_hash")
77 + self.version_data['commit_id'] = self.getProperty("commit_id")
78 self.version_data['uuid'] = yield self.gentooci.db.versions.addVersion(
79 self.version_data['name'],
80 self.version_data['package_uuid'],
81 - self.version_data['file_hash']
82 + self.version_data['file_hash'],
83 + self.version_data['commit_id']
84 )
85 print(self.version_data)
86 self.setProperty("version_data", self.version_data, 'version_data')
87 @@ -98,6 +101,33 @@ class GetAuxMetadata(BuildStep):
88 yield portdbapi.portdbapi_instances.remove(self.myportdb)
89 return SUCCESS
90
91 +class GetCommitdata(BuildStep):
92 +
93 + name = 'GetCommitdata'
94 + description = 'Running'
95 + descriptionDone = 'Ran'
96 + descriptionSuffix = None
97 + haltOnFailure = True
98 + flunkOnFailure = True
99 +
100 + def __init__(self, **kwargs):
101 + super().__init__(**kwargs)
102 +
103 + @defer.inlineCallbacks
104 + def run(self):
105 + #FIXME: Could be a better way to get the log
106 + git_log_ebuild = ''
107 + g = git.Git(self.getProperty("repository_path"))
108 + index = 1
109 + git_log_dict = {}
110 + git_log = yield g.log('-n 1', self.getProperty("ebuild_file"))
111 + print(git_log)
112 + for line in git_log.splitlines():
113 + git_log_dict[index] = line
114 + index = index + 1
115 + self.setProperty('commit_id', re.sub('commit ', '', git_log_dict[1]), 'commit_id')
116 + return SUCCESS
117 +
118 class AddVersionKeyword(BuildStep):
119
120 name = 'AddVersionKeyword'
121 @@ -178,6 +208,7 @@ class CheckPathHash(BuildStep):
122 self.ebuild_file_hash = None
123 self.setProperty('ebuild_file', self.ebuild_file, 'ebuild_file')
124 self.setProperty('ebuild_file_hash', self.ebuild_file_hash, 'ebuild_file_hash')
125 + self.setProperty('repository_path', self.repository_path, 'repository_path')
126 return SUCCESS
127
128 class TriggerBuildCheck(BuildStep):
129 @@ -248,6 +279,7 @@ class CheckV(BuildStep):
130 addStepVData.append(DeleteOldVersion())
131 if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is not None:
132 if self.getProperty("ebuild_file_hash") != self.getProperty("old_version_data")['file_hash']:
133 + addStepVData.append(GetCommitdata())
134 addStepVData.append(AddVersion())
135 addStepVData.append(GetAuxMetadata())
136 addStepVData.append(AddVersionKeyword())
137 @@ -256,6 +288,7 @@ class CheckV(BuildStep):
138 else:
139 return SUCCESS
140 if self.getProperty("ebuild_file") is not None and self.getProperty("old_version_data") is None:
141 + addStepVData.append(GetCommitdata())
142 addStepVData.append(AddVersion())
143 addStepVData.append(GetAuxMetadata())
144 addStepVData.append(AddVersionKeyword())