From: Michael Tremer Date: Fri, 5 May 2023 06:29:28 +0000 (+0000) Subject: builds: Allow disabling test builds over the API X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=376abedf3ace3d450afaa80c2ed715c0a4a5766f;p=pbs.git builds: Allow disabling test builds over the API Signed-off-by: Michael Tremer --- diff --git a/src/buildservice/builds.py b/src/buildservice/builds.py index a4c7f3ad..1f6b5cd5 100644 --- a/src/buildservice/builds.py +++ b/src/buildservice/builds.py @@ -173,7 +173,8 @@ class Builds(base.Object): return list(builds) - async def create(self, repo, package, owner=None, group=None, test=False): + async def create(self, repo, package, owner=None, group=None, test=False, + disable_test_builds=False): """ Creates a new build based on the given distribution and package """ @@ -189,11 +190,12 @@ class Builds(base.Object): pkg_id, owner_id, build_group_id, - test + test, + disable_test_builds ) VALUES ( - %s, %s, %s, %s, %s + %s, %s, %s, %s, %s, %s ) RETURNING *""", repo, @@ -201,6 +203,7 @@ class Builds(base.Object): owner, group, test, + disable_test_builds, ) # Populate cache @@ -641,7 +644,7 @@ class Build(base.DataObject): self._send_email("builds/messages/failed.txt") # Create any test builds - if success and not self.is_test(): + if success: return await self.create_test_builds() def has_finished(self): @@ -920,6 +923,15 @@ class Build(base.DataObject): """ This creates test builds for this build """ + # You cannot create any test builds for test builds + if self.is_test(): + return + + # Don't create any test builds if requested to be disabled + if self.data.disable_test_builds: + log.debug("Creating test builds has been disabled for %s" % self) + return + builds = {} # Map all builds by their name diff --git a/src/database.sql b/src/database.sql index ec5416b6..587645f7 100644 --- a/src/database.sql +++ b/src/database.sql @@ -126,7 +126,8 @@ CREATE TABLE public.builds ( deprecated_at timestamp without time zone, deprecated_by integer, test_group_id integer, - test boolean DEFAULT false NOT NULL + test boolean DEFAULT false NOT NULL, + disable_tests boolean DEFAULT false NOT NULL ); diff --git a/src/web/builds.py b/src/web/builds.py index a9e81ded..27c11f13 100644 --- a/src/web/builds.py +++ b/src/web/builds.py @@ -25,6 +25,9 @@ class APIv1IndexHandler(base.APIMixin, base.BaseHandler): # Fetch the repository repo_name = self.get_argument("repo", None) + # Did the uploader request to disable test builds? + disable_test_builds = self.get_argument_bool("disable_test_builds") + with self.db.transaction(): # Import the package try: @@ -41,7 +44,8 @@ class APIv1IndexHandler(base.APIMixin, base.BaseHandler): raise tornado.web.HTTPError(404, "Could not find repository") # Create a new build - build = await self.backend.builds.create(repo, package, owner=self.current_user) + build = await self.backend.builds.create(repo, package, + owner=self.current_user, disable_test_builds=disable_test_builds) # Delete the upload await upload.delete()