From b67795619574abcc6c554dafca2b250a0af8cb8e Mon Sep 17 00:00:00 2001 From: dervoeti Date: Wed, 25 Jun 2025 15:29:58 +0200 Subject: [PATCH 1/4] feat: separate --release argument for SDP version --- src/image_tools/args.py | 57 ++++++++++++++++++++++++++++++++++++++++- src/image_tools/bake.py | 2 +- 2 files changed, 57 insertions(+), 2 deletions(-) diff --git a/src/image_tools/args.py b/src/image_tools/args.py index 02217fd..0c43b51 100644 --- a/src/image_tools/args.py +++ b/src/image_tools/args.py @@ -15,6 +15,11 @@ re.compile(r"0\.0\.0-dev(-.+)?"), ] +DEFAULT_RELEASE_FORMATS = [ + re.compile(r"[2-9][0-9]\.[1-9][0-2]?\.\d+(-rc\d+)?"), + re.compile(r"0\.0\.0-dev"), +] + def build_bake_argparser() -> ArgumentParser: parser = ArgumentParser( @@ -36,6 +41,12 @@ def build_bake_argparser() -> ArgumentParser: default="0.0.0-dev", help="Image version. Default: 0.0.0-dev.", ) + parser.add_argument( + "--release", + type=check_release_format, + default="0.0.0-dev", + help="SDP release version. Default: 0.0.0-dev.", + ) parser.add_argument( "-p", "--product", @@ -164,6 +175,43 @@ def check_image_version_format(image_version) -> str: raise ValueError(f"Invalid image version: {image_version}") +def check_release_format(release) -> str: + """ + Check release against allowed formats. + + >>> check_release_format("23.4.0") + '23.4.0' + >>> check_release_format("23.4.0-rc1") + '23.4.0-rc1' + >>> check_release_format("0.0.0-dev") + '0.0.0-dev' + >>> check_release_format("0.0.0-dev-kebab") + Traceback (most recent call last): + File "", line 1, in + File "", line 5, in check_release_format + ValueError: Invalid release: 0.0.0-dev-kebab + >>> check_release_format("23.11.1-dev-kaese") + Traceback (most recent call last): + File "", line 1, in + File "", line 5, in check_release_format + ValueError: Invalid release: 23.11.1-dev-kaese + >>> check_release_format("23.04.0") + Traceback (most recent call last): + File "", line 1, in + File "", line 5, in check_release_format + ValueError: Invalid release: 23.04.0 + >>> check_release_format("23.4.0.prerelease") + Traceback (most recent call last): + File "", line 1, in + File "", line 5, in check_release_format + ValueError: Invalid release: 23.4.0.prerelease + """ + for p in DEFAULT_RELEASE_FORMATS: + if p.fullmatch(release): + return release + raise ValueError(f"Invalid release: {release}") + + def check_build_arg(build_args: str) -> Tuple[str, str]: kv = build_args.split("=") if len(kv) != 2: @@ -181,10 +229,17 @@ def preflight_args() -> Namespace: parser.add_argument( "-i", "--image-version", - help="Image version", + help="Image version. Default: 0.0.0-dev.", required=True, type=check_image_version_format, ) + + parser.add_argument( + "--release", + help="SDP release version. Default: 0.0.0-dev.", + required=True, + type=check_release_format, + ) parser.add_argument("-p", "--product", help="Product to build images for", required=True) parser.add_argument("-s", "--submit", help="Submit results", action="store_true") parser.add_argument("-d", "--dry", help="Dry run.", action="store_true") diff --git a/src/image_tools/bake.py b/src/image_tools/bake.py index c9d11ef..13ccdec 100644 --- a/src/image_tools/bake.py +++ b/src/image_tools/bake.py @@ -115,7 +115,7 @@ def bakefile_product_version_targets( """ image_name = f"{args.registry}/{args.organization}/{product_name}" tags = build_image_tags(image_name, args.image_version, versions["product"]) - build_args = build_image_args(versions, args.image_version) + build_args = build_image_args(versions, args.release) target_name = bakefile_target_name_for_product_version(product_name, versions["product"]) rfc3339_date_time = datetime.now(timezone.utc).isoformat() revision = get_git_revision() From 7e04b1864959ea136781243e292c0ad9a526b589 Mon Sep 17 00:00:00 2001 From: Lukas Krug Date: Wed, 25 Jun 2025 15:53:58 +0200 Subject: [PATCH 2/4] Update src/image_tools/args.py Co-authored-by: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> --- src/image_tools/args.py | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/image_tools/args.py b/src/image_tools/args.py index 0c43b51..0eb2d28 100644 --- a/src/image_tools/args.py +++ b/src/image_tools/args.py @@ -233,13 +233,6 @@ def preflight_args() -> Namespace: required=True, type=check_image_version_format, ) - - parser.add_argument( - "--release", - help="SDP release version. Default: 0.0.0-dev.", - required=True, - type=check_release_format, - ) parser.add_argument("-p", "--product", help="Product to build images for", required=True) parser.add_argument("-s", "--submit", help="Submit results", action="store_true") parser.add_argument("-d", "--dry", help="Dry run.", action="store_true") From 4524a211cb68a466fa394d8d547dd18bdef77c7f Mon Sep 17 00:00:00 2001 From: Lukas Krug Date: Wed, 25 Jun 2025 15:54:03 +0200 Subject: [PATCH 3/4] Update src/image_tools/args.py Co-authored-by: Razvan-Daniel Mihai <84674+razvan@users.noreply.github.com> --- src/image_tools/args.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/image_tools/args.py b/src/image_tools/args.py index 0eb2d28..496142f 100644 --- a/src/image_tools/args.py +++ b/src/image_tools/args.py @@ -229,7 +229,7 @@ def preflight_args() -> Namespace: parser.add_argument( "-i", "--image-version", - help="Image version. Default: 0.0.0-dev.", + help="Image version.", required=True, type=check_image_version_format, ) From 7cc1e42076c048090c512e4a4bd3cb0a4ab84764 Mon Sep 17 00:00:00 2001 From: dervoeti Date: Wed, 25 Jun 2025 16:13:55 +0200 Subject: [PATCH 4/4] chore: changelog --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index b0f2da7..dc0f6ac 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,8 +5,10 @@ All notable changes to this project will be documented in this file. ## [Unreleased] - Add support for bake target hierarchies ([#51]) +- Add a separate `--release` argument for the SDP version ([#55]) [#51]: https://github.com/stackabletech/image-tools/pull/51 +[#55]: https://github.com/stackabletech/image-tools/pull/55 ## [0.0.14] - 2025-02-04