繁体   English   中英

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"

我显然想将提交信息放入 my.json 文件中,但它并没有提取实际的提交 sha。 当我查看.json 文件时,它插入了变量的文字定义,即“latest${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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM