summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2021-09-29 21:12:29 +0000
committerGerrit Code Review <review@openstack.org>2021-09-29 21:12:29 +0000
commit0bc4a9b4818cfd2200342421e2b6ad26ce213a04 (patch)
tree1ba45c5c8574bc13476ea99ea86b7a5470eeae8d
parentca2704be7b8ba94d55826e1951851bd445dec28e (diff)
parent358830ba58a6a200f8443783db249f4374dbad67 (diff)
downloadzuul-0bc4a9b4818cfd2200342421e2b6ad26ce213a04.tar.gz
Merge "Show emoji to highlight failed jobs in build result in Github"
-rw-r--r--zuul/driver/github/githubreporter.py31
-rw-r--r--zuul/driver/pagure/pagurereporter.py2
-rw-r--r--zuul/reporter/__init__.py8
3 files changed, 37 insertions, 4 deletions
diff --git a/zuul/driver/github/githubreporter.py b/zuul/driver/github/githubreporter.py
index 372911364..637968f8a 100644
--- a/zuul/driver/github/githubreporter.py
+++ b/zuul/driver/github/githubreporter.py
@@ -101,12 +101,41 @@ class GithubReporter(BaseReporter):
except Exception as e:
self.addPullComment(item, str(e))
+ def _formatJobResult(self, job_fields):
+ # We select different emojis to represents build results:
+ # heavy_check_mark: SUCCESS
+ # warning: SKIPPED/ABORTED
+ # x: all types of FAILUREs
+ # In addition, failure results are in bold text
+
+ job_result = job_fields[2]
+ # Also need to handle user defined success_message.
+ # The job_fields[6]: the user defined seccess_message (if available)
+ success_message = job_fields[6]
+
+ emoji = 'x'
+ bold_result = True
+
+ if job_result in ('SUCCESS', success_message):
+ emoji = 'heavy_check_mark'
+ bold_result = False
+ elif job_result in ('SKIPPED', 'ABORTED'):
+ emoji = 'warning'
+ bold_result = False
+
+ if bold_result:
+ return ':%s: [%s](%s) **%s**%s%s%s\n' % (
+ (emoji,) + job_fields[:6])
+ else:
+ return ':%s: [%s](%s) %s%s%s%s\n' % (
+ (emoji,) + job_fields[:6])
+
def _formatItemReportJobs(self, item):
# Return the list of jobs portion of the report
ret = ''
jobs_fields = self._getItemReportJobsFields(item)
for job_fields in jobs_fields:
- ret += '- [%s](%s) : %s%s%s%s\n' % job_fields
+ ret += self._formatJobResult(job_fields)
return ret
def addPullComment(self, item, comment=None):
diff --git a/zuul/driver/pagure/pagurereporter.py b/zuul/driver/pagure/pagurereporter.py
index 1feda9213..e6f33ef47 100644
--- a/zuul/driver/pagure/pagurereporter.py
+++ b/zuul/driver/pagure/pagurereporter.py
@@ -68,7 +68,7 @@ class PagureReporter(BaseReporter):
ret = ''
jobs_fields = self._getItemReportJobsFields(item)
for job_fields in jobs_fields:
- ret += '- [%s](%s) : %s%s%s%s\n' % job_fields
+ ret += '- [%s](%s) : %s%s%s%s\n' % job_fields[:6]
return ret
def addPullComment(self, item, comment=None):
diff --git a/zuul/reporter/__init__.py b/zuul/reporter/__init__.py
index 07a5960f7..05b15a882 100644
--- a/zuul/reporter/__init__.py
+++ b/zuul/reporter/__init__.py
@@ -270,7 +270,11 @@ class BaseReporter(object, metaclass=abc.ABCMeta):
# the url field to match old behavior until we can deal with
# the gerrit-side piece as well
url = url or job.name
- jobs_fields.append((name, url, result, error, elapsed, voting))
+ # Pass user defined success_message deciding the build result
+ # during result formatting
+ success_message = job.success_message
+ jobs_fields.append(
+ (name, url, result, error, elapsed, voting, success_message))
return jobs_fields
def _formatItemReportJobs(self, item):
@@ -278,5 +282,5 @@ class BaseReporter(object, metaclass=abc.ABCMeta):
ret = ''
jobs_fields = self._getItemReportJobsFields(item)
for job_fields in jobs_fields:
- ret += '- %s%s : %s%s%s%s\n' % job_fields
+ ret += '- %s%s : %s%s%s%s\n' % job_fields[:6]
return ret