Jenkins Shell脚本问题



我试图从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-没有从stdincut命令的输入,然后没有到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=$(...)将包含上面的输出赫尔姆瓦尔

相关内容

  • 没有找到相关文章

最新更新