summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2015-11-08 18:05:07 +0000
committerLars Wirzenius <liw@liw.fi>2015-11-08 18:05:07 +0000
commit14ae397fde3ef6b085da2da22e6b3d6c39d64f50 (patch)
treea052085281460798b26b2c43afc477a67f368451
parentbc0f88bb9e0386bf187a566b63435eb87f720680 (diff)
downloadick-14ae397fde3ef6b085da2da22e6b3d6c39d64f50.tar.gz
Add duration to build.yaml
-rw-r--r--icklib/buildinfo.py2
-rw-r--r--icklib/buildinfo_tests.py2
-rw-r--r--icklib/project.py10
3 files changed, 11 insertions, 3 deletions
diff --git a/icklib/buildinfo.py b/icklib/buildinfo.py
index 022516b..b3b7f2a 100644
--- a/icklib/buildinfo.py
+++ b/icklib/buildinfo.py
@@ -23,7 +23,7 @@ import yaml
class BuildInformation(object):
- _attrs = ['build_number', 'commits', 'pipeline', 'status']
+ _attrs = ['build_number', 'commits', 'pipeline', 'status', 'duration']
def __init__(self):
self._dirname = None
diff --git a/icklib/buildinfo_tests.py b/icklib/buildinfo_tests.py
index 184a8b5..a9298ee 100644
--- a/icklib/buildinfo_tests.py
+++ b/icklib/buildinfo_tests.py
@@ -49,6 +49,7 @@ class BuildInformationTests(unittest.TestCase):
'commit': 'cafef00d',
},
]
+ build_info.duration = 42
build_info.save()
loaded = icklib.BuildInformation()
@@ -57,3 +58,4 @@ class BuildInformationTests(unittest.TestCase):
self.assertEqual(build_info.build_number, loaded.build_number)
self.assertEqual(build_info.commits, loaded.commits)
+ self.assertEqual(build_info.duration, loaded.duration)
diff --git a/icklib/project.py b/icklib/project.py
index 71c3718..d752eee 100644
--- a/icklib/project.py
+++ b/icklib/project.py
@@ -90,17 +90,21 @@ class Project(object):
project=self.name)
run_state.logger.important(
'Executing pipeline {name}', name=pipeline_name)
+
+ run_state.started = time.time()
try:
pipeline.build(self, statedir, targets, run_state)
except:
if getattr(run_state, 'build_info', None) is not None:
run_state.build_info.status = 'FAILURE'
+ run_state.build_info.duration = (
+ time.time() - run_state.started)
run_state.build_info.save()
run_state.logger.important('')
run_state.logger.important('Build status: FAILURE')
run_state.logger.important(
- 'Build log ends {timestamp)',
- self.current_timestamp())
+ 'Build log ends {timestamp}',
+ timestamp=self.current_timestamp())
raise
run_state.logger.important(
@@ -449,6 +453,8 @@ class FinishBuildInfo(icklib.BuildStep):
def build(self):
if getattr(self.run_state, 'build_info', None) is not None:
self.run_state.build_info.status = 'SUCCESS'
+ self.run_state.build_info.duration = (
+ time.time() - self.run_state.started)
self.run_state.build_info.save()