如何将grep和tr与pipe一起用作Jenkinsfile中的bash命令



im使用带有tr的grep命令从我当前目录中的文件访问版本。grep命令可以工作,但不能作为变量在Jenkinsfile的上下文中工作。

我有这个:

grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "version:[:blank:]"}'         

我想要这个:

myPath='something_"${grepVersion}"'

如下:

echo "{$myPath}"
output: something_0.0.2

如果尝试了很多,如果有人能帮我,那就太好了。

我的詹金斯档案看起来像这样:

pipeline {
stages {
stage('Build') {
steps {
script {

echo "build something"
}
}

}

stage('Deploy'){
steps{
script {

#grep version from file 
grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "version:[:blank:]"}'                 

#access archivePath 
archivePath="${WORKSPACE}/archives/${env.JOB_NAME}_"${grepVersion}".mtar"

#deploy something with arhivePath
sh 'XX deploy "${archivePath}" -f'
}
}
}
}
}

此命令有效并访问正确的版本:

grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"

我的路径中有以下文件,我想在其中访问版本:0.0.2作为0.0.2,以将其连接到我的archivePath变量。

ID
Name
version: 0.0.2

different_version: 0.0.2


different_version: 0.0.3

以下命令适用于bash shell,可以访问正确的版本:0.0.2

grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"

但它不适用于Jenkins文件和groovy上下文。如果已尝试以下命令访问0.0.2以将其用作bash变量:

这里是"^"造成问题:

grepVersion=${grep -we "^version:" myconfig.yaml |tr -d "version:[:blank:]"}

这里的命令由于双引号而无法解析:

grepVersion="${grep -we '^version:' myconfig.yaml |tr -d 'version:[:blank:]'"'

grepVersion='$(grep -we '^version:' myconfig.yaml |tr -d 'version:[:blank:]')"

等等还没有找到解决方案。

已经谢谢你的帮助了。

非常感谢,你们都是对的!

以下命令适用于我:

grepVersion=sh 'sed -n s/^version:[[:blank:]]*//p mta.yaml'

最新更新