У меня есть файл yaml, который я хочу изменить с помощью ruamel.Я могу изменить его, если развертывание содержит только одну среду.Проблема в том, что я хочу добавить / изменить более одной среды.Вот пример кода, который работает для одной среды, используя 2 аргумента.
sample.py
import ruamel.yaml
import sys
file_name = 'Jenkinsfile.yaml'
from ruamel.yaml.util import load_yaml_guess_indent
config, ind, bsi = load_yaml_guess_indent(open(file_name))
totalArgs = len(sys.argv) - 1
print(totalArgs)
print(sys.argv[1:])
if totalArgs == 2:
deploy = config['deploy']
deploy[0]['env'] = sys.argv[1]
deploy[0]['org'] = sys.argv[2]
elif totalArgs == 4:
deploy = config['deploy']
deploy[0]['env'] = sys.argv[1]
deploy[0]['org'] = sys.argv[2]
deploy[0]['env'] = sys.argv[3]
deploy[0]['org'] = sys.argv[4]
deploy[0]['host'] = 'https://**.com'
deploy[0]['loc'] = 'saas'
deploy[0]['manifest'] = 'manifest_dev.yml'
ruamel.yaml.round_trip_dump(config, open('Jenkinsfile.yaml', 'w'),
indent=ind, block_seq_indent=bsi)
Результат
sample.py mitul-trial test
deploy:
- env: mitul-trial (Will change)
org: test (Will change)
host: https://**.com (will remain same)
loc: saas (will remain same)
manifest: manifest_dev.yml (will remain same)
approval: true (will remain same)
Требуемый результат:
sample.py mitul-trial test mitul1 testsomething
deploy:
- env: mitul-trial (Will change)
org: test (Will change)
host: https://**.com (will remain same)
loc: saas (will remain same)
manifest: manifest_dev.yml (will remain same)
approval: true (will remain same)
- env: mitul1 (Will change)
org: testsomething (Will change)
host: https://**.com (will remain same)
loc: saas (will remain same)
manifest: manifest_dev.yml (will remain same)
approval: true (will remain same)