# HG changeset patch # User Georges Racinet <georges.racinet@octobus.net> # Date 1642066687 -3600 # Thu Jan 13 10:38:07 2022 +0100 # Node ID 436badcbc7bfacfda26c65c9f8c028f0ec04a78c # Parent 7dc88f9ae50270bf97e6b5e18a8e72eacb500dc5 push-release: option for non-tag builds diff --git a/push-release b/push-release --- a/push-release +++ b/push-release @@ -30,6 +30,10 @@ parser.add_argument('-s', '--simulate', action='store_true') parser.add_argument('-y', '--no-confirmation', action='store_true') parser.add_argument('-l', '--logging-level', default='info') +parser.add_argument('--arbitrary-build-number', action='store_true', + help="Accept any build number, not only numeric ones. " + "(useful if a tag has not been interpreted but it doesn't " + "matter much, such as for a release candidate.") parser.add_argument('series', type=series, help="Used to derive the appropriate Docker rolling " "tags (latest and testing). " @@ -54,7 +58,7 @@ return '%s-py%d' % (default, py_version) -def read_check_version(stable_series): +def read_check_version(stable_series, validate_build_number=True): """Read version files and check consistency.""" img = testing_img(stable_series, py_version=None) logger.info("Reading version metadata from image %r", img) @@ -73,10 +77,11 @@ assert release[0].rstrip() == "RELEASE_PACKAGE=heptapod" release_version, build_number = release[1].rstrip().rsplit('-', 1) assert release_version.replace('~', '') == "RELEASE_VERSION=" + version - try: - build_number = int(build_number) - except TypeError: - raise InvalidBuildNumber(release[1]) + if validate_build_number: + try: + int(build_number) + except TypeError: + raise InvalidBuildNumber(release[1]) return archival, version, build_number @@ -106,7 +111,8 @@ try: archival, version, build_nr = read_check_version( - stable_series=stable_series) + stable_series=stable_series, + validate_build_number=not parsed_args.arbitrary_build_number) except InvalidBuildNumber as exc: logger.error("Invalid build number in /RELEASE file: %r. " "Bailing", **exc.args)