From: Michael Tremer Date: Fri, 12 May 2023 20:16:50 +0000 (+0000) Subject: builds: Connect groups to tested build X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a1bc49627417fa6be8226dd34995f057dfa6ffa5;p=pbs.git builds: Connect groups to tested build Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index c08a9c02..e4f0bf2d 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -967,7 +967,7 @@ class Build(base.DataObject): return # Create a build group for all tests - group = self.backend.builds.groups.create(owner=self.owner) + group = self.backend.builds.groups.create(owner=self.owner, tested_build=self) # Create a test build only for the latest version of each package for name in builds: @@ -1043,7 +1043,7 @@ class Groups(base.Object): """, uuid, ) - def create(self, owner=None): + def create(self, owner=None, tested_build=None): """ Creates a new Build Group """ @@ -1051,14 +1051,15 @@ class Groups(base.Object): INSERT INTO build_groups ( - created_by + created_by, + tested_build_id ) VALUES( - %s + %s, %s ) RETURNING * - """, owner, + """, owner, tested_build, ) @@ -1141,6 +1142,22 @@ class Group(base.DataObject): """ return [b for b in self.builds if b.has_failed()] + # Tested Build + + @lazy_property + def tested_build(self): + if self.data.tested_build_id: + return self.backend.builds.get_by_id(self.data.tested_build_id) + + def is_test(self): + """ + Returns True if this is a test group + """ + if self.data.tested_build_id: + return True + + return False + # Delete async def delete(self, user=None): @@ -1187,12 +1204,6 @@ class Group(base.DataObject): """ return all((b.has_finished() for b in self.builds)) - def is_test(self): - """ - Returns True if this is a test group (i.e. all builds are test builds) - """ - return all((b.is_test() for b in self.builds)) - async def _build_finished(self, build): """ Called when a build has finished diff --git a/src/database.sql b/src/database.sql index f584e34c..b561c244 100644 --- a/src/database.sql +++ b/src/database.sql @@ -66,7 +66,10 @@ CREATE TABLE public.build_groups ( created_at timestamp without time zone DEFAULT CURRENT_TIMESTAMP NOT NULL, created_by integer, deleted_at timestamp without time zone, - deleted_by integer + deleted_by integer, + finished_at timestamp without time zone, + failed boolean DEFAULT false NOT NULL, + tested_build_id integer ); @@ -1677,6 +1680,14 @@ ALTER TABLE ONLY public.build_groups ADD CONSTRAINT build_groups_deleted_by FOREIGN KEY (deleted_by) REFERENCES public.users(id); +-- +-- Name: build_groups build_groups_tested_build_id; Type: FK CONSTRAINT; Schema: public; Owner: - +-- + +ALTER TABLE ONLY public.build_groups + ADD CONSTRAINT build_groups_tested_build_id FOREIGN KEY (tested_build_id) REFERENCES public.builds(id); + + -- -- Name: build_packages build_packages_build_id; Type: FK CONSTRAINT; Schema: public; Owner: - --