10

我正在尝试在 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 的,这是否意味着您不能进行常见的脚本操作?

4

2 回答 2

5

这行得通吗?

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

假设 versionFromFile 当然是从文件中正确读取的。要测试这不是您的问题,您可以像这样定义它

versionFromFile = "99"
sh "git tag ${versionFromFile}-${env.BUILD_NUMBER}"
于 2016-08-10T17:08:12.790 回答
3

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

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

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

echo "$RESULT"

然后如果PARAM是值为“YOU”的输入参数,则打印输出为:

“这是 4 个你”

然后关于您的环境变量问题${env.BUILD_NUMBER}尝试简单地使用BUILD_NUMBER

于 2021-09-09T15:26:06.273 回答