Прежде всего ваш Chart.yaml
не является допустимым YAML, вам нужно вставить разделитель значений (:
) перед "1.0"
во второй строке.
Предположим, ваш Makefile
выглядит так:
helm:
python3 updateversion.py Chart.yaml ${version}
cat Chart.yaml
, ruamel.yaml
установлен для вашего Python3 и вашего updateversion.py
:
import sys
from pathlib import Path
import ruamel.yaml
yaml_file = Path(sys.argv[1])
yaml = ruamel.yaml.YAML()
yaml.preserve_quotes = True
# uncomment and adapt next line in case defaults don't match your indentation
# yaml.indent(mapping=4, sequence=4, offset=2)
data = yaml.load(yaml_file)
version = sys.argv[2]
if isinstance(data['version'], float):
version = float(version)
data['version'] = version
yaml.dump(data, yaml_file)
вы можете запустить make helm version=0.3
, чтобы получить вывод:
apiVersion: v1
appVersion: "1.0"
description: A helm chart for so and so
name: my app
version: 0.3
Трюк с проверочным значением для version
, являющегося float, необходим, так как 0.2
- это float при загрузке YAML, но 0.2.1
- строка. И то, что вы получаете из командной строки, используя sys.argv[2]
, всегда является строкой.
Вы можете заменить строку cat Chart.yaml
для цели helm
тем, что вам нужно для запуска с обновленным файлом.