如何在Jenkinsfile中连接字符串?

13
我试图在Jenkinsfile中连接一些字符串,但是它没有起作用:
def versionFromFile = readFile("./version")
def version = versionFromFile + env.BUILD_NUMBER

我也尝试了其他解决方案:

sh "echo version: ${version}-${env.BUILD_NUMBER}"
sh "git tag ${version}-${env.BUILD_NUMBER}"

但是${env.BUILD_NUMBER}没有被计算/打印出来

如果我这样做

sh "git tag 1.0.1-${env.BUILD_NUMBER}"

${env.BUILD_NUMBER}被评估/打印出来

我仍然不明白Jenkinsfile中的脚本语言是如何工作的,文档都是关于DSL的,这是否意味着你不能执行常见的脚本操作?


我认为在Jenkinsfile中定义变量时不需要使用def。 - Mark Chorley
2个回答

6

Jenkinsfile遵循Groovy语言的相同语法(有一些例外)。请参阅Jenkins语法

Jenkinsfile中连接字符串的方法是使用加号(“+”)字符。例如:

VAR1 = "THIS IS"
VAR2 = 4
RESULT = VAR1 + " " + VAR2 + " " + PARAM

echo "$RESULT"

如果PARAM是一个输入参数,其值为"YOU",则打印输出为:

"THIS IS 4 YOU"

关于您在环境变量 ${env.BUILD_NUMBER} 的问题,请尝试仅使用BUILD_NUMBER


6

这个可行吗?

versionFromFile = readFile("./version")
sh "git tag ${versionFromFile}-${env.BUILD_NUMBER}"

假设versionFromFile正确地从文件中读取。为了测试这不是你的问题,你可以这样定义它:

versionFromFile = "99"
sh "git tag ${versionFromFile}-${env.BUILD_NUMBER}"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接