From: Michael Tremer Date: Fri, 15 Jul 2022 09:15:29 +0000 (+0000) Subject: jobs: Clone on fail X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef0cea235ae4081656677d37f49164629f3efa57;p=pbs.git jobs: Clone on fail Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/jobs.py b/src/buildservice/jobs.py index 64538ae6..fd3e4962 100644 --- a/src/buildservice/jobs.py +++ b/src/buildservice/jobs.py @@ -231,7 +231,10 @@ class Job(base.DataObject): # Store the time self._set_attribute_now("finished_at") - # XXX handle success status + # Did this build fail? + if not success: + # Clone the build + self.clone() # Store message self._set_attribute("message", message) @@ -293,6 +296,21 @@ class Job(base.DataObject): # Delete the job itself. self.db.execute("DELETE FROM jobs WHERE id = %s", self.id) + def clone(self): + """ + Clones this build job + """ + job = self.backend.jobs.create( + build=self.build, + arch=self.arch, + test=self.test, + superseeds=self, + ) + + log.debug("Cloned job %s as %s" % (self, job)) + + return job + ## Logging stuff def log(self, action, user=None, state=None, builder=None, test_job=None):