[英]How do I use grep and tr with pipe as a bash command in a Jenkinsfile?
我使用带有 tr 的 grep 命令从我当前目录中的文件访问版本。 grep 命令可以工作,但不能作为变量在 Jenkinsfile 的上下文中使用。
我有这个:
grepVersion='${grep -we "^version:" myconfig.yaml | tr -d "version:[:blank:]"}'
我要这个:
myPath='something_"${grepVersion}"'
像这样:
echo "{$myPath}"
output: something_0.0.2
如果尝试了很多,如果有人可以帮助我,那就太好了。
我的 Jenkinsfile 看起来像这样:
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 as 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 文件和常规上下文。 如果尝试使用以下命令访问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'
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.