diff options
author | iaz1607 <iaz1607@yandex-team.com> | 2024-09-18 08:38:56 +0300 |
---|---|---|
committer | iaz1607 <iaz1607@yandex-team.com> | 2024-09-18 08:50:46 +0300 |
commit | a6b59a03314787c4e8858a9dca55deb5c33a3353 (patch) | |
tree | f1eff1eb9a9e8ab2baf502b7f792f7d885f42063 /build/plugins/_dart_fields.py | |
parent | d6f80e9acb3f02e9cab011cc91de347da803cdf0 (diff) | |
download | ydb-a6b59a03314787c4e8858a9dca55deb5c33a3353.tar.gz |
Docker image fetch macro
commit_hash:0899d0942e1f7ad8dd12e28f6b3f088982660699
Diffstat (limited to 'build/plugins/_dart_fields.py')
-rw-r--r-- | build/plugins/_dart_fields.py | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/build/plugins/_dart_fields.py b/build/plugins/_dart_fields.py index 07ff9ce0f2..51349aa4ae 100644 --- a/build/plugins/_dart_fields.py +++ b/build/plugins/_dart_fields.py @@ -926,6 +926,35 @@ class TestData: return {cls.KEY: serialize_list(get_values_list(unit, "TEST_DATA_VALUE"))} +class DockerImage: + KEY = 'DOCKER-IMAGES' + + @staticmethod + def _validate(images): + docker_image_re = consts.DOCKER_LINK_RE + for img in images: + msg = None + if "=" in img: + link, _ = img.rsplit('=', 1) + if docker_image_re.match(link) is None: + msg = 'Invalid docker url format: {}. Link should be provided in format docker://<repo>@sha256:<digest>'.format( + link + ) + else: + msg = 'Invalid docker image: {}. Image should be provided in format <link>=<tag>'.format(img) + if msg: + ymake.report_configure_error(msg) + raise DartValueError(msg) + + @classmethod + def value(cls, unit, flat_args, spec_args): + raw_value = get_values_list(unit, 'DOCKER_IMAGES_VALUE') + images = sorted(raw_value) + if images: + cls._validate(images) + return {cls.KEY: serialize_list(images)} + + class TsConfigPath: KEY = 'TS_CONFIG_PATH' |