我试图从Jenkins中的helm文件中获取信息。为此我做:
helm history adt-development -n adt-development --max 1 --output yaml
以获得值";。图表";在舵手yaml输出中,我使用yq
yq ".chart"
因为有一个坏的yaml文件被报告-"一开始太多了,我试着把它剪掉。
但是,如何在jenkinsshell中编写这个命令来填充一个变量呢?
我试过了:
helmvalue=$(helm history pro-development -n pro-development --max 1 --output yaml) | cut -c2- | yq '-chart'
但是yq将用"0"读取输出-"因此它忽略剪切输出。知道如何吗
- 阅读掌舵信息->切割前2个字符->从以前的输出中读取chart
应要求提供其他信息:掌舵人报告:
- app_version: 0.6.0
chart: prof-1.0.1-2022-03-02-1616-46eb101842db6e367f3cd9ab42636ee9bf7d4912
description: Upgrade complete
revision: 355
status: deployed
updated: '"2022-03-02T16:42:52.04760689+01:00"'
yq:的输出
Error: bad file '-': yaml: mapping values are not allowed in this context
在YAML
语法中,短划线-
引入键值对象列表,通过yq
将其转换为数组。使用.[]
访问它。
使用mikefarah/yq,使用
yq '.[].chart'
使用kislyuk/yq,添加-r
选项以生成原始文本
yq -r '.[].chart'
如果我正确阅读了意图和语法,
helmvalue=$(helm history pro-development -n pro-development --max 1 --output yaml)
存储在变量中;则没有到CCD_ 7的输出。这意味着<some cmd output> | cut -c2-
没有从stdin
到cut
命令的输入,然后没有到yq
的输入。
helmvalue=$(helm history pro-development -n pro-development --max 1 --output yaml| cut -c2-| yq '-chart')
移动闭合括号"("结束和:
helm history ... -output yaml
将发送到stdout
cut -c2-
将处理stdin
,剪切2个字符并发送到stdout
yq '-chart
应该从stdin处理一系列冒号分隔的值,并向stdout输出一个helmchart(?(helmvalue=$(...)
将包含上面的输出赫尔姆瓦尔