From 7a390f1b571871bae4568de7ec982ce08b6dc459 Mon Sep 17 00:00:00 2001 From: Michal Tekel Date: Mon, 23 Jun 2025 15:00:32 +0100 Subject: [PATCH 1/5] pipeline: remove unused property Autobump script does not read or use REPO_ROOT --- ci/pipeline.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/ci/pipeline.yml b/ci/pipeline.yml index c95d56f0..59a5cd68 100644 --- a/ci/pipeline.yml +++ b/ci/pipeline.yml @@ -328,7 +328,6 @@ jobs: path: /usr/bin/python3 args: ["ci/scripts/autobump-dependencies.py"] params: - REPO_ROOT: git PR_BASE: master PR_ORG: cloudfoundry PR_LABEL: run-ci From d65cce0ff915ea302eb9f7fdf7b752356084d19e Mon Sep 17 00:00:00 2001 From: Michal Tekel Date: Mon, 23 Jun 2025 15:36:31 +0100 Subject: [PATCH 2/5] CI: add changelog function structure to dep. bump script Provide function and structure to add type specific changelog. --- ci/scripts/autobump-dependencies.py | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/ci/scripts/autobump-dependencies.py b/ci/scripts/autobump-dependencies.py index 646ea8de..29330f37 100755 --- a/ci/scripts/autobump-dependencies.py +++ b/ci/scripts/autobump-dependencies.py @@ -150,6 +150,12 @@ def fetch_latest_release(self) -> Release: """ raise NotImplementedError + def get_release_notes(self) -> str: + """ + Obtain changelog for the given current and latest release difference. This is useful to attach to the PR. + """ + raise NotImplementedError + def remove_current_blob(self): current_blob_path = f"{self.package}/{self.name}-{self.current_version}.tar.gz" if self._check_blob_exists(current_blob_path): @@ -196,7 +202,7 @@ def create_pr(self): Automatic bump from version {self.current_version} to version {self.latest_release.version}, downloaded from {self.latest_release.url}. After merge, consider releasing a new version of haproxy-boshrelease. - """ + """ + self.get_release_notes() ) if not DRY_RUN: self._create_branch(self.remote_repo, self.pr_branch) @@ -285,6 +291,9 @@ def get_release_download_url(rel): return latest_release + def get_release_notes(self) -> str: + return "" + @dataclass class WebLinkDependency(Dependency): @@ -320,6 +329,9 @@ def fetch_latest_release(self) -> Release: raise Exception(f"Failed to get latest {self.name} version from {self.root_url}") + def get_release_notes(self) -> str: + return "" + @dataclass class HaproxyDependency(Dependency): @@ -344,6 +356,16 @@ def fetch_latest_release(self) -> Release: version.parse(latest_version), ) + def get_release_notes(self) -> str: + current_version = self.current_version + latest_version = self.latest_release.version + + # TODO: check if current version and latest version are defined and different + # this function should be only called if they are, but check still + + return "" + + def wget(url: str, path: str, auth: Optional[Tuple[str, str]] = None): """ From a365a77fad1c3e3ceaaf8d5c7faa67e33be5e24d Mon Sep 17 00:00:00 2001 From: Michal Tekel Date: Tue, 24 Jun 2025 15:51:35 +0100 Subject: [PATCH 3/5] CI: Add haproxy PR changelog Download and parse haproxy changelog for automated PR bumps. --- ci/scripts/autobump-dependencies.py | 34 +++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) diff --git a/ci/scripts/autobump-dependencies.py b/ci/scripts/autobump-dependencies.py index 29330f37..2a0b3b72 100755 --- a/ci/scripts/autobump-dependencies.py +++ b/ci/scripts/autobump-dependencies.py @@ -190,7 +190,7 @@ def open_pr_exists(self) -> bool: for pr in self.remote_repo.get_pulls( state="open", base=PR_BASE, head=f"{PR_ORG}:{self.pr_branch}" - ): # theoretically there shold never be more than one open PR, print them anyways + ): # theoretically there should never be more than one open PR, print them anyways print(f"Open {self.pr_branch} PR exists: {pr.html_url}") prs_exist = True return prs_exist @@ -360,10 +360,36 @@ def get_release_notes(self) -> str: current_version = self.current_version latest_version = self.latest_release.version - # TODO: check if current version and latest version are defined and different - # this function should be only called if they are, but check still + if ( current_version == latest_version ): + raise Exception(f"""Changelog requested but current and latest versions are the same: {current_version}""") - return "" + releaseNote = f""" + [Changelog for {latest_version}](https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG). + + Please also check list of [known open bugs for {latest_version}](https://www.haproxy.org/bugs/bugs-{latest_version}.html). + """ + + wget(f"""https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG""", "HAPROXY-CHANGELOG") + with open('HAPROXY-CHANGELOG', 'r') as file: + releaseNote += f""" +
+ + HAPROXY CHANGELOG between {latest_version} and {current_version} + """ + + startCopy = False + for line in file: + if (line.endswith(str(latest_version)+"\n")): # Start copying from latest version head + startCopy = True + if (line.endswith(str(current_version)+"\n")): # Stop when reaching current version + break + if not startCopy: + continue + releaseNote += line + + releaseNote += f"""
""" + + return releaseNote From 73ea5bd1363da09f3f9d7f6082958de9a8cdadde Mon Sep 17 00:00:00 2001 From: mtekel Date: Wed, 25 Jun 2025 10:00:31 +0100 Subject: [PATCH 4/5] Improve PR message Add link to haproxy release annoucement post Co-authored-by: Alexander Lais --- ci/scripts/autobump-dependencies.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ci/scripts/autobump-dependencies.py b/ci/scripts/autobump-dependencies.py index 2a0b3b72..d0e4771c 100755 --- a/ci/scripts/autobump-dependencies.py +++ b/ci/scripts/autobump-dependencies.py @@ -364,9 +364,11 @@ def get_release_notes(self) -> str: raise Exception(f"""Changelog requested but current and latest versions are the same: {current_version}""") releaseNote = f""" - [Changelog for {latest_version}](https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG). + [Changelog for HAProxy {latest_version}](https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG). - Please also check list of [known open bugs for {latest_version}](https://www.haproxy.org/bugs/bugs-{latest_version}.html). + Please also check list of [known open bugs for HAProxy {latest_version}](https://www.haproxy.org/bugs/bugs-{latest_version}.html). + + The developer's summary for this release can be found in [the Announcement post for the HAProxy {latest_version} release](https://www.mail-archive.com/search?l=haproxy%40formilux.org&q=announce+subject%3A%22[ANNOUNCE]+haproxy-{latest_version}%22+-subject%3A%22re:%22). """ wget(f"""https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG""", "HAPROXY-CHANGELOG") From d736365c1a9ea6856c26812ccafbfe52a9d4f143 Mon Sep 17 00:00:00 2001 From: Michal Tekel Date: Wed, 25 Jun 2025 11:03:02 +0100 Subject: [PATCH 5/5] CI: fix haproxy PR message formatting --- ci/scripts/autobump-dependencies.py | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/ci/scripts/autobump-dependencies.py b/ci/scripts/autobump-dependencies.py index d0e4771c..949f7d48 100755 --- a/ci/scripts/autobump-dependencies.py +++ b/ci/scripts/autobump-dependencies.py @@ -202,8 +202,8 @@ def create_pr(self): Automatic bump from version {self.current_version} to version {self.latest_release.version}, downloaded from {self.latest_release.url}. After merge, consider releasing a new version of haproxy-boshrelease. - """ + self.get_release_notes() - ) + """) + self.get_release_notes() + if not DRY_RUN: self._create_branch(self.remote_repo, self.pr_branch) @@ -360,24 +360,26 @@ def get_release_notes(self) -> str: current_version = self.current_version latest_version = self.latest_release.version - if ( current_version == latest_version ): + if (current_version == latest_version): raise Exception(f"""Changelog requested but current and latest versions are the same: {current_version}""") - releaseNote = f""" + releaseNote = textwrap.dedent(f""" [Changelog for HAProxy {latest_version}](https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG). Please also check list of [known open bugs for HAProxy {latest_version}](https://www.haproxy.org/bugs/bugs-{latest_version}.html). - - The developer's summary for this release can be found in [the Announcement post for the HAProxy {latest_version} release](https://www.mail-archive.com/search?l=haproxy%40formilux.org&q=announce+subject%3A%22[ANNOUNCE]+haproxy-{latest_version}%22+-subject%3A%22re:%22). - """ + + The developer's summary for this release can be found in [the Announcement post for the HAProxy {latest_version} release](https://www.mail-archive.com/search?l=haproxy%40formilux.org&q=announce+subject%3A%22[ANNOUNCE]+haproxy-{latest_version}%22+-subject%3A%22re:%22). + """) wget(f"""https://www.haproxy.org/download/{HAPROXY_VERSION}/src/CHANGELOG""", "HAPROXY-CHANGELOG") with open('HAPROXY-CHANGELOG', 'r') as file: - releaseNote += f""" -
+ releaseNote += textwrap.dedent(f""" +
+ + HAPROXY CHANGELOG between {latest_version} and {current_version} - HAPROXY CHANGELOG between {latest_version} and {current_version} - """ + ``` + """) startCopy = False for line in file: @@ -389,7 +391,10 @@ def get_release_notes(self) -> str: continue releaseNote += line - releaseNote += f"""
""" + releaseNote += textwrap.dedent(f""" + ``` + +
""") return releaseNote