diff --git a/library/ix-dev/community/minecraft/upgrade_info.json b/library/ix-dev/community/minecraft/upgrade_info.json index 767388094a..195bbb446c 100644 --- a/library/ix-dev/community/minecraft/upgrade_info.json +++ b/library/ix-dev/community/minecraft/upgrade_info.json @@ -1 +1,18 @@ -{"filename": "values.yaml", "keys": ["image"]} +{ + "filename": "values.yaml", + "keys": [ + "j8Image", + "j8gceImage", + "j8j9Image", + "j8jdkImage", + "j11Image", + "j11j9Image", + "j11jdkImage", + "j17Image", + "j17j9Image", + "j17jdkImage", + "j17gceImage", + "j17alpineImage", + "j19Image" + ] +} diff --git a/library/ix-dev/community/minecraft/upgrade_strategy b/library/ix-dev/community/minecraft/upgrade_strategy index 41e9448b21..e389413c0e 100755 --- a/library/ix-dev/community/minecraft/upgrade_strategy +++ b/library/ix-dev/community/minecraft/upgrade_strategy @@ -5,22 +5,89 @@ import sys from catalog_update.upgrade_strategy import semantic_versioning - -RE_STABLE_VERSION = re.compile(r'[0-9]+\.[0-9]+\.[0-9]+') +RE_STABLE_VERSION_BASE = r'\d+\.\d+\.\d+' +ENUMS = { + 'j8Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java8'), + 'STRIP_TEXT': '-java8' + }, + 'j8gceImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java8-graalvm-ce'), + 'STRIP_TEXT': '-java8-graalvm-ce' + }, + 'j8j9Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java8-openj9'), + 'STRIP_TEXT': '-java8-openj9' + }, + 'j8jdkImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java8-jdk'), + 'STRIP_TEXT': '-java8-jdk' + }, + 'j11Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java11'), + 'STRIP_TEXT': '-java11' + }, + 'j11j9Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java11-openj9'), + 'STRIP_TEXT': '-java11-openj9' + }, + 'j11jdkImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java11-jdk'), + 'STRIP_TEXT': '-java11-jdk' + }, + 'j17Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java17'), + 'STRIP_TEXT': '-java17' + }, + 'j17j9Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java17-openj9'), + 'STRIP_TEXT': '-java17-openj9' + }, + 'j17jdkImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java17-jdk'), + 'STRIP_TEXT': '-java17-jdk' + }, + 'j17gceImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java17-graalvm-ce'), + 'STRIP_TEXT': '-java17-graalvm-ce' + }, + 'j17alpineImage': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java17-alpine'), + 'STRIP_TEXT': '-java17-alpine' + }, + 'j19Image': { + 'RE_STABLE_VERSION': re.compile(rf'{RE_STABLE_VERSION_BASE}-java19'), + 'STRIP_TEXT': '-java19' + } +} def newer_mapping(image_tags): - key = list(image_tags.keys())[0] - tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} - version = semantic_versioning(list(tags)) - if not version: - return {} - - return { - 'tags': {key: tags[version]}, - 'app_version': version, + output = { + "tags": {}, + "app_version": "" } + for key in image_tags.keys(): + STRIP_TEXT = ENUMS[key].get('STRIP_TEXT', None) if key in ENUMS else None + RE_STABLE_VERSION = ENUMS[key].get('RE_STABLE_VERSION', None) if key in ENUMS else None + + if (STRIP_TEXT is None) or (RE_STABLE_VERSION is None): + continue + + tags = {t.strip(STRIP_TEXT): t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + + if not version: + continue + + if key == 'j8Image': + output['app_version'] = version + + output['tags'][key] = tags[version] + + return output + if __name__ == '__main__': try: diff --git a/library/ix-dev/community/terraria/upgrade_info.json b/library/ix-dev/community/terraria/upgrade_info.json index 767388094a..76eb701e78 100644 --- a/library/ix-dev/community/terraria/upgrade_info.json +++ b/library/ix-dev/community/terraria/upgrade_info.json @@ -1 +1 @@ -{"filename": "values.yaml", "keys": ["image"]} +{ "filename": "values.yaml", "keys": ["image", "vanillaImage"] } diff --git a/library/ix-dev/community/terraria/upgrade_strategy b/library/ix-dev/community/terraria/upgrade_strategy index 4a1eb2ef48..25c0f36ab5 100755 --- a/library/ix-dev/community/terraria/upgrade_strategy +++ b/library/ix-dev/community/terraria/upgrade_strategy @@ -6,21 +6,45 @@ import sys from catalog_update.upgrade_strategy import semantic_versioning -RE_STABLE_VERSION = re.compile(r'tshock-[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+-[0-9]+\.[0-9]+\.[0-9]+(-[0-9]+)?') +RE_STABLE_VERSION_BASE = r'\d+\.\d+\.\d+' +ENUMS = { + 'image': { + 'RE_STABLE_VERSION': re.compile(rf'tshock-{RE_STABLE_VERSION_BASE}\.[0-9]+-{RE_STABLE_VERSION_BASE}-[0-9]+'), + 'STRIP_TEXT': 'tschock-' + }, + 'vanillaImage': { + 'RE_STABLE_VERSION': re.compile(rf'vanilla-{RE_STABLE_VERSION_BASE}\.[0-9]+'), + 'STRIP_TEXT': 'vanilla-' + }, +} def newer_mapping(image_tags): - key = list(image_tags.keys())[0] - tags = {t: t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} - version = semantic_versioning(list(tags)) - if not version: - return {} - - return { - 'tags': {key: tags[version]}, - 'app_version': version, + output = { + "tags": {}, + "app_version": "" } + for key in image_tags.keys(): + STRIP_TEXT = ENUMS[key].get('STRIP_TEXT', None) if key in ENUMS else None + RE_STABLE_VERSION = ENUMS[key].get('RE_STABLE_VERSION', None) if key in ENUMS else None + + if (STRIP_TEXT is None) or (RE_STABLE_VERSION is None): + continue + + tags = {t.strip(STRIP_TEXT): t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + version = semantic_versioning(list(tags)) + + if not version: + continue + + if key == 'image': + output['app_version'] = version + + output['tags'][key] = tags[version] + + return output + if __name__ == '__main__': try: diff --git a/library/ix-dev/enterprise/minio/upgrade_info.json b/library/ix-dev/enterprise/minio/upgrade_info.json index 767388094a..1477da7baf 100644 --- a/library/ix-dev/enterprise/minio/upgrade_info.json +++ b/library/ix-dev/enterprise/minio/upgrade_info.json @@ -1 +1 @@ -{"filename": "values.yaml", "keys": ["image"]} +{ "filename": "values.yaml", "keys": ["image", "logsearchImage"] } diff --git a/library/ix-dev/enterprise/minio/upgrade_strategy_disable b/library/ix-dev/enterprise/minio/upgrade_strategy_disable index f8161573f5..0209796a7c 100755 --- a/library/ix-dev/enterprise/minio/upgrade_strategy_disable +++ b/library/ix-dev/enterprise/minio/upgrade_strategy_disable @@ -1,23 +1,57 @@ #!/usr/bin/python3 import json +import re import sys +from catalog_update.upgrade_strategy import semantic_versioning from catalog_update.upgrade_strategy import datetime_versioning -def newer_mapping(image_tags): - key = list(image_tags.keys())[0] - tags = {t.strip('RELEASE.'): t for t in image_tags[key] if t.startswith( - 'RELEASE.') and t.endswith('Z')} - version = datetime_versioning(list(tags), '%Y-%m-%dT%H-%M-%SZ') - if not version: - return {} +ENUMS = { + 'image': { + 'RE_STABLE_VERSION': re.compile(r'RELEASE.\d{4}-\d{2}-\d{2}T\d{2}-\d{2}-\d{2}}Z'), + 'STRIP_TEXT': 'RELEASE.', + 'function': datetime_versioning, + 'function_arg': '%Y-%m-%dT%H-%M-%SZ' + }, + 'logsearchImage': { + 'RE_STABLE_VERSION': re.compile(r'v\d+\.\d+\.\d+'), + 'STRIP_TEXT': 'v', + 'function': semantic_versioning + }, +} - return { - 'tags': {key: tags[version]}, - 'app_version': version.split('T')[0], + +def newer_mapping(image_tags): + + output = { + "tags": {}, + "app_version": "" } + for key in image_tags.keys(): + STRIP_TEXT = ENUMS[key].get('STRIP_TEXT', None) if key in ENUMS else None + RE_STABLE_VERSION = ENUMS[key].get('RE_STABLE_VERSION', None) if key in ENUMS else None + VERSION_FUNCTION = ENUMS[key].get('function', None) if key in ENUMS else None + + if (STRIP_TEXT is None) or (RE_STABLE_VERSION is None) or (VERSION_FUNCTION is None): + continue + + tags = {t.strip(STRIP_TEXT): t for t in image_tags[key] if RE_STABLE_VERSION.fullmatch(t)} + if ENUMS[key].get('function_arg', None): + version = VERSION_FUNCTION(list(tags), ENUMS[key].get('function_arg')) + else: + version = VERSION_FUNCTION(list(tags)) + if not version: + continue + + if key == 'image': + output['app_version'] = version + + output['tags'][key] = tags[version] + + return output + if __name__ == '__main__': try: