Skip to content

Commit 9ab49ba

Browse files
committed
USHIFT-6718: Update release notes scripts
1 parent 7058c7e commit 9ab49ba

2 files changed

Lines changed: 36 additions & 17 deletions

File tree

scripts/release-notes/gen_gh_releases_from_mirror.py

Lines changed: 30 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@
6060

6161
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(levelname)-8s [%(filename)s:%(lineno)d] %(message)s')
6262

63-
URL_BASE = "https://mirror.openshift.com/pub/openshift-v4/aarch64/microshift"
64-
URL_BASE_X86 = "https://mirror.openshift.com/pub/openshift-v4/x86_64/microshift"
63+
64+
def get_mirror_url_base(major_version, arch):
65+
"""Get the mirror URL base for the given major version and architecture."""
66+
return f"https://mirror.openshift.com/pub/openshift-v{major_version}/{arch}/microshift"
67+
6568

6669
# An EC RPM filename looks like
6770
# microshift-4.13.0~ec.4-202303070857.p0.gcf0bce2.assembly.ec.4.el9.aarch64.rpm
@@ -167,13 +170,22 @@ def main():
167170
if args.versions_to_scan:
168171
versions_to_scan = args.versions_to_scan
169172

173+
# Group versions by major to use correct mirror URL bases
174+
versions_by_major = {}
175+
for version in versions_to_scan:
176+
scan_major = version.split('.', 1)[0]
177+
versions_by_major.setdefault(scan_major, []).append(version)
178+
170179
new_releases = []
171-
if args.ec:
172-
new_releases.extend(find_new_releases(versions_to_scan, URL_BASE, 'ocp-dev-preview'))
173-
new_releases.extend(find_new_releases(versions_to_scan, URL_BASE_X86, 'ocp-dev-preview'))
174-
if args.rc:
175-
new_releases.extend(find_new_releases(versions_to_scan, URL_BASE, 'ocp'))
176-
new_releases.extend(find_new_releases(versions_to_scan, URL_BASE_X86, 'ocp'))
180+
for scan_major, scan_versions in versions_by_major.items():
181+
url_base_aarch64 = get_mirror_url_base(scan_major, 'aarch64')
182+
url_base_x86 = get_mirror_url_base(scan_major, 'x86_64')
183+
if args.ec:
184+
new_releases.extend(find_new_releases(scan_versions, url_base_aarch64, 'ocp-dev-preview'))
185+
new_releases.extend(find_new_releases(scan_versions, url_base_x86, 'ocp-dev-preview'))
186+
if args.rc:
187+
new_releases.extend(find_new_releases(scan_versions, url_base_aarch64, 'ocp'))
188+
new_releases.extend(find_new_releases(scan_versions, url_base_x86, 'ocp'))
177189

178190
if not new_releases:
179191
logging.info("No new releases found.")
@@ -194,7 +206,7 @@ def main():
194206
class VersionListParser(html.parser.HTMLParser):
195207
"""HTMLParser to extract version numbers from the mirror file list pages.
196208
197-
A page like https://mirror.openshift.com/pub/openshift-v4/aarch64/microshift/ocp-dev-preview/
209+
A page like https://mirror.openshift.com/pub/openshift-v{major}/aarch64/microshift/ocp-dev-preview/
198210
199211
contains HTML like
200212
@@ -355,20 +367,25 @@ def publish_candidate_release(new_release, take_action):
355367
candidate_number = new_release.candidate_number
356368
release_type = new_release.release_type
357369

370+
# Extract major version from product version (e.g., "4" from "4.16.0")
371+
major_version = product_version.split('.')[0]
372+
url_base_x86 = get_mirror_url_base(major_version, 'x86_64')
373+
url_base_aarch64 = get_mirror_url_base(major_version, 'aarch64')
374+
358375
# Set up the release notes preamble with download links
359376
preamble = textwrap.dedent(f"""
360377
This is a candidate release for {product_version}.
361378
362379
See the mirror for build artifacts:
363-
- {URL_BASE_X86}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/
364-
- {URL_BASE}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/
380+
- {url_base_x86}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/
381+
- {url_base_aarch64}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/
365382
366383
Or add this RPM repository to your x86 systems:
367384
368385
```
369386
[microshift-{product_version}-{candidate_type}-{candidate_number}]
370387
name=MicroShift {product_version} EarlyAccess {candidate_type}.{candidate_number} RPMs
371-
baseurl={URL_BASE_X86}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/el9/os/
388+
baseurl={url_base_x86}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/el9/os/
372389
enabled=1
373390
gpgcheck=0
374391
skip_if_unavailable=0
@@ -379,7 +396,7 @@ def publish_candidate_release(new_release, take_action):
379396
```
380397
[microshift-{product_version}-{candidate_type}-{candidate_number}]
381398
name=MicroShift {product_version} EarlyAccess {candidate_type}.{candidate_number} RPMs
382-
baseurl={URL_BASE}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/el9/os/
399+
baseurl={url_base_aarch64}/{release_type}/{product_version}-{candidate_type}.{candidate_number}/el9/os/
383400
enabled=1
384401
gpgcheck=0
385402
skip_if_unavailable=0

scripts/release-notes/gen_gh_releases_from_rhocp.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ def get_rpm_releases():
2626
"""Gets the releases from the released MicroShift RPMs in the RHOCP repositories.
2727
"""
2828
arch = platform.machine()
29-
_, current_minor = common.get_version_from_makefile()
29+
current_major, current_minor = common.get_version_from_makefile()
3030

3131
with dnf.Base() as base:
3232
base.read_all_repos()
@@ -36,8 +36,10 @@ def get_rpm_releases():
3636

3737
# Enable RHOCP repos starting from 4.14 to the current-2 (inclusive; range() stops before the second argument).
3838
# E.g., for 4.21 it's 4.14-4.19 because when 4.21 development started, the 4.20 wasn't released yet.
39-
for minor in range(14, int(current_minor)-1):
40-
repo_id = f"rhocp-4.{minor}-for-rhel-9-{arch}-rpms"
39+
# For major version 5, start from 5.0; for major version 4, start from 4.14.
40+
start_minor = 0 if int(current_major) >= 5 else 14
41+
for minor in range(start_minor, int(current_minor)-1):
42+
repo_id = f"rhocp-{current_major}.{minor}-for-rhel-9-{arch}-rpms"
4143
r = base.repos.get_matching(repo_id)
4244
r.enable()
4345
logging.info(f'Enabled repo: {r.id} - {r.name}')
@@ -48,7 +50,7 @@ def get_rpm_releases():
4850
# Try to add current-1 (continuing example from above, it'd be 4.20).
4951
# This is separate because DNF does not query remote repos in order, so enabling not active repo can derail whole cache update.
5052
try:
51-
r = base.repos.get(f"rhocp-4.{int(current_minor)-1}-for-rhel-9-{arch}-rpms")
53+
r = base.repos.get(f"rhocp-{current_major}.{int(current_minor)-1}-for-rhel-9-{arch}-rpms")
5254
r.enable()
5355
logging.info(f'Enabled repo: {r.id} - {r.name}')
5456
base.fill_sack()

0 commit comments

Comments
 (0)