我需要用破折号分割一个git标签。以下是数据示例:
DEVQA-10000000-6d26fa05def3fa94a2acd0ca12fcdd6a82fc46d7-SUCCESS
这应该分为$ 1- $ 2- $ 3- $ 4
我的想法是使用awk git tag -l | grep DEVQA | awk -F '[ -]' '{print $1}'
。
我尝试使用withEnvs定义,我尝试在另一个脚本中获取值并将其加载到我的中,即加载'env / file'
我似乎无法弄明白。它将命令打印为管道运行
stage('Build ') {
def buildRecordId = sh(script: "git tag -l | grep DEVQA | awk -F \'[ -]\' \'{print \$2}\'", returnStdout: true).trim() as Integer
def startRev = sh(script: "git tag -l | grep DEVQA | awk -F \'[ -]\' \'{print \$3}\'", returnStdout: true).trim()
def testlevel="noLocalTests"
sh """ export testlevel="${testlevel}";
export startrevision="${env.startRev}";
export buildrecordid="${env.buildRecordId}";
echo "I worked: $startrevision";
/tools/ant/apache-ant-1.9.4/bin/ant -verbose -buildfile ./buildtool/build.xml -propertyfile ./buildtool/build.properties.hc.inc.dev startCICD
"""
}
当然,它没有找到开始修订:
“groovy.lang.MissingPropertyException:没有这样的属性:startrevision for class:groovy.lang.Binding at groovy.lang.Binding.getVariable(Binding.java:63)at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor。 onGetProperty(SandboxInterceptor.java:264)
你在sh
步骤中使用了三重双引号字符串,它将在执行sh
步骤中的bash之前进行字符串插值。阅读here的详细信息
字符串插值将尝试用常规变量${ABC}
的值替换$ABC
或ABC
。
你的错误说它在插值时找不到groovy变量startrevision
。
如果startrevision
打算成为bash环境变量,你需要通过$
来逃避\$
,如果是一个常规变量,请定义并赋值给它。
echo "I worked: \$startrevision";