aboutsummaryrefslogtreecommitdiffstats
path: root/build/plugins/_dart_fields.py
diff options
context:
space:
mode:
authoriaz1607 <iaz1607@yandex-team.com>2024-09-18 08:38:56 +0300
committeriaz1607 <iaz1607@yandex-team.com>2024-09-18 08:50:46 +0300
commita6b59a03314787c4e8858a9dca55deb5c33a3353 (patch)
treef1eff1eb9a9e8ab2baf502b7f792f7d885f42063 /build/plugins/_dart_fields.py
parentd6f80e9acb3f02e9cab011cc91de347da803cdf0 (diff)
downloadydb-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.py29
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'