Jaypore CI

> Jaypore CI: Minimal, Offline, Local CI system.
Log | Files | Refs | README

commit c7ab299b29338ea50c7c920334ea6da0cb7e62ea
parent da7824bb7bb9f260d4dbe87da9b5e85d2973e566
Author: arjoonn sharma <arjoonn@midpathsoftware.com>
Date:   Tue,  6 Dec 2022 09:09:40 +0530

deletion should remove all jobs

Diffstat:
Mjaypore_ci/docker.py | 17++++++++++++++++-
Mjaypore_ci/jci.py | 2+-
2 files changed, 17 insertions(+), 2 deletions(-)

diff --git a/jaypore_ci/docker.py b/jaypore_ci/docker.py @@ -21,18 +21,22 @@ class Docker(Executor): def __init__(self): super().__init__() self.pipe_id = None + self.pipeline = None def logging(self): return logger.bind(pipe_id=self.pipe_id, network_name=self.get_net()) - def set_pipe_id(self, pipe_id): + def set_pipe_id(self, pipe_id, pipeline): if self.pipe_id is not None: self.delete_network() + self.delete_all_jobs() self.pipe_id = pipe_id + self.pipeline = pipeline self.create_network() def __exit__(self, exc_type, exc_value, traceback): self.delete_network() + self.delete_all_jobs() def get_net(self): return f"jaypore_{self.pipe_id}" if self.pipe_id is not None else None @@ -60,6 +64,17 @@ class Docker(Executor): ) raise Exception("Cannot create network") + def delete_all_jobs(self): + assert self.pipe_id is not None, "Cannot delete jobs if pipe is not set" + for job in self.pipeline.job: + self.logging().info( + "Stop job:", + subprocess=self.check_output(f"docker stop -t 1 {job.run_id}"), + ) + job.check_job(with_update_report=False) + job.check_job() + self.logging().info("All jobs stopped") + def delete_network(self): assert self.pipe_id is not None, "Cannot delete network if pipe is not set" self.logging().info( diff --git a/jaypore_ci/jci.py b/jaypore_ci/jci.py @@ -233,7 +233,7 @@ class Pipeline: # pylint: disable=too-many-instance-attributes self.remote = remote if remote is not None else gitea.Gitea.from_env() self.executor = executor if executor is not None else docker.Docker() self.graph_direction = graph_direction - self.executor.set_pipe_id(id(self)) + self.executor.set_pipe_id(id(self), self) def logging(self): return logger.bind(