Sed命令给我带来了合并$tag变量的问题,witch等于"最新的${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文件时,它插入了变量的字面定义,即"最新的${GIT_COMMIT:0:4}"。我正试图在运行在linux上的jenkins服务器上的声明性管道上实现这一点。
我希望它插入";latestxxxx";。有什么建议可以帮我解决这个问题吗?
GIT_COMMIT
是一个可供您使用的环境变量;tag
是一个groovy变量,您已经将其设置为'latest${GIT_COMMIT:0:4}'
。因此,由于sed命令使用"
,因此它将被替换。但是您将'
用于sed表达式,它不会替换环境变量。所以你基本上有两个选择:
- 如果您对内容感到安全,请使用
"
引用sed命令,该命令将被替换(您可以对整个命令使用"""
三引号,而不必对groovy引用"
( - 在groovy中自己解析环境中的变量(例如
System.env['GIT_COMMIT].substring(0,4)
(