Jenkins变量不适用于管道中的sed命令

时间:2020-08-12 19:28:57

标签: variables jenkins groovy sed pipeline

Sed命令给我带来了以下问题:合并$ tag变量witch等于“ 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"

我显然想将.com提交信息放入我的.json文件中,但是它并没有提取实际的提交信息。当我看一下.json文件时,它插入了变量的字面定义,即“ latest $ {GIT_COMMIT:0:4}”。我正在尝试在Linux上运行的jenkins服务器上的声明性管道上执行此操作。

我希望它插入“ latestxxxx”。关于如何解决这个问题有什么建议吗?

1 个答案:

答案 0 :(得分:0)

GIT_COMMIT是可供您使用的环境变量; tag是一个常规变量,您已将其设置为'latest${GIT_COMMIT:0:4}'。因此,由于您在sed命令中使用",因此此内容被替换。但是,您在sed表达式中使用的是',然后它又不会替换环境变量。因此,您基本上有两个选择:

  • 使用"引用sed命令,如果您对内容感到满意,则将其替换(您可以对整个命令使用"""三重引号,而不必引用{ {1}}(适用于常规)
  • 常规地从环境中解析变量(例如类似"的东西)
相关问题