В настоящее время я работаю над редактированием сценария конвейера Azure DevOps и столкнулся с препятствием при попытке реорганизовать существующую реализацию.
Я хочу передать строку JSON в качестве аргумента скрипту Ruby, вызываемому YAML.
Я пробовал много разных способов добиться этого, но безуспешно. Мои навыки написания сценариев заржавели, вот и все.
Был бы признателен, если бы кто-нибудь указал мне правильное направление?
Спасибо.
JSON:
{"name": "John", "age": 10, "city": "New York"}
Скрипт:
require 'json'
namespace: test do
task :getConfigs, [:json_string] do |task, args|
json_string = args[:json_string]
configs = JSON.parse(json_string)
val1 = configs['name']
val2 = configs['age']
puts "#{val1} is #{val2} years old."
end
ЯМЛ:
- script: bash -i -c 'rake test:getConfigs["$json_data"] //json_data being a Pipeline variable.
Как я вызываю его в Терминале локально:
rake "test:getConfigs[\"{\"name\": \"John\", \"age\": 10, \"city\": \"New York\"}\"]"
или другой вариант без экранирования символов.
Я продолжаю получать ошибку JSON::ParserError: 767: unexpected token at 'name": "John"'
Здесь вам также нужно выйти из запятых и удалить двойные кавычки внутри квадратных скобок.
Команда ниже должна работать.
rake "test:getConfigs[{\"name\": \"John\"\, \"age\": 10\, \"city\": \"New York\"}]"
Вау, спасибо большое. Сработало как по волшебству. :)