]> git.ipfire.org Git - pbs.git/commitdiff
monitoring: Reference build in bug report
authorMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 May 2023 14:13:35 +0000 (14:13 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Mon, 29 May 2023 14:13:35 +0000 (14:13 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/buildservice/releasemonitoring.py

index 0bba44719acd15ac7d394b41dd1aa93645851ce4..22daa5c85546565ecf1edb3417ee85e930a8b754 100644 (file)
@@ -39,7 +39,15 @@ log = logging.getLogger("pbs.releasemonitoring")
 ratelimiter = asyncio.Semaphore(value=4)
 
 BUG_DESCRIPTION = """\
-A new version of %(name)s has been released: %(version)s\
+A new version of %(name)s has been released: %(version)s
+
+This is an automatically created bug report by our release monitoring.
+"""
+
+BUG_DESCRIPTION_WITH_BUILD = BUG_DESCRIPTION + """
+A build has been created to test this release:
+
+  %(url)s
 """
 
 BUG_DESCRIPTION_WITH_BUILD = BUG_DESCRIPTION + """\n
@@ -414,9 +422,6 @@ class Monitoring(base.DataObject):
                # Add the release to cache
                self.releases.append(release)
 
-               # Create a bug report
-               await release._create_bug()
-
                # Create a build
                if self.data.create_builds:
                        await release._create_build(
@@ -424,6 +429,9 @@ class Monitoring(base.DataObject):
                                owner=self.backend.users.pakfire,
                        )
 
+               # Create a bug report
+               await release._create_bug()
+
                # Return the release
                return release
 
@@ -534,8 +542,12 @@ class Release(base.DataObject):
                                "description" : BUG_DESCRIPTION_WITH_BUILD % \
                                        {
                                                "name"    : self.monitoring.name,
-                                               "version" : self.version
+                                               "version" : self.version,
+                                               "url"     : self.backend.url_to(self.build.url),
                                        },
+
+                               # Set the URL to point to the build
+                               "url" : self.backend.url_to(self.build.url),
                        }
 
                # Create the bug
@@ -544,6 +556,15 @@ class Release(base.DataObject):
                # Store the bug ID
                self._set_attribute("bug_id", bug.id)
 
+               # Attach the diff (if we have one)
+               if self.diff:
+                       await bug.attach(
+                               filename="%s.patch" % self,
+                               data=self.diff,
+                               summary="Patch for %s" % self,
+                               is_patch=True,
+                       )
+
                return bug
 
        async def _close_bug(self, *args, **kwargs):
@@ -585,13 +606,19 @@ class Release(base.DataObject):
                        return self.backend.builds.get_by_id(self.data.build_id)
 
        def set_build(self, build):
-               if self.build:
+               if self.build and not self.build == build:
                        raise AttributeError("Cannot reset build")
 
                self._set_attribute("build_id", build)
 
        build = lazy_property(get_build, set_build)
 
+       # Diff
+
+       @property
+       def diff(self):
+               return self.data.diff
+
        async def _create_build(self, build, owner):
                """
                        Creates a build