Jenkins 变量不能在管道中使用 sed 命令
Jenkins variable not working with sed command in pipeline
Sed 命令给我带来了合并 $tag 变量 等于“latest${GIT_COMMIT:0:7}”的问题。这是 Sed 命令:
sh "sed -i 's/{BUILD_NUMBER}/$tag/' /var/lib/jenkins/workspace/${JOB_NAME}/em-api/dev-nics-emapi-svc-param.json"
我显然想将提交信息放入我的 .json 文件中,但它不会提取实际的提交 sha。当我查看 .json 文件时,它插入了变量的字面定义,即“latest${GIT_COMMIT:0:4}”。我正在尝试在 linux.
上我的詹金斯服务器 运行 上的声明性管道上执行此操作
我希望它插入“latestxxxx”。关于如何解决这个问题有什么建议吗?
GIT_COMMIT
是您可以使用的环境变量; tag
是一个 groovy 变量,您已设置为 'latest${GIT_COMMIT:0:4}'
。所以这会被替换,因为您使用 "
作为 sed 命令。但是您正在使用 '
作为您的 sed 表达式,这将再次不会替换环境变量。所以你基本上有两个选择:
- 使用
"
引用sed命令,如果你觉得内容安全,那会被替换(你可以对整个命令使用"""
三引号,这样就不必引用了"
对应 groovy)
- 在groovy中自己从环境中解析变量(例如
System.env['GIT_COMMIT].substring(0,4)
)
Sed 命令给我带来了合并 $tag 变量 等于“latest${GIT_COMMIT:0:7}”的问题。这是 Sed 命令:
sh "sed -i 's/{BUILD_NUMBER}/$tag/' /var/lib/jenkins/workspace/${JOB_NAME}/em-api/dev-nics-emapi-svc-param.json"
我显然想将提交信息放入我的 .json 文件中,但它不会提取实际的提交 sha。当我查看 .json 文件时,它插入了变量的字面定义,即“latest${GIT_COMMIT:0:4}”。我正在尝试在 linux.
上我的詹金斯服务器 运行 上的声明性管道上执行此操作我希望它插入“latestxxxx”。关于如何解决这个问题有什么建议吗?
GIT_COMMIT
是您可以使用的环境变量; tag
是一个 groovy 变量,您已设置为 'latest${GIT_COMMIT:0:4}'
。所以这会被替换,因为您使用 "
作为 sed 命令。但是您正在使用 '
作为您的 sed 表达式,这将再次不会替换环境变量。所以你基本上有两个选择:
- 使用
"
引用sed命令,如果你觉得内容安全,那会被替换(你可以对整个命令使用"""
三引号,这样就不必引用了"
对应 groovy) - 在groovy中自己从环境中解析变量(例如
System.env['GIT_COMMIT].substring(0,4)
)