variables - Jenkins 变量不能在管道中使用 sed 命令
问题描述
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 上的 jenkins 服务器上的声明性管道上执行此操作。
我希望它插入“latestxxxx”。关于如何解决这个问题的任何建议?
解决方案
GIT_COMMIT
是您可以使用的环境变量;tag
是一个 groovy 变量,您已设置为'latest${GIT_COMMIT:0:4}'
. 因此,由于您使用"
的是 sed 命令,因此它被替换了。但是你正在使用'
你的 sed 表达式,它不会再替换环境变量。所以你基本上有两种选择:
"
如果您对被替换的内容感到安全,请使用引用 sed 命令(您可以"""
对整个命令使用三引号,而不必引用"
for groovy)- 在 groovy 中自己从环境中解析变量(例如,类似的东西
System.env['GIT_COMMIT].substring(0,4)
)
推荐阅读
- aws-lambda - AWS Statemachine 无法将输入 json 数据传递给第一个 Lambda
- javascript - 使用页面语言(WordPress)动态更新按钮href
- r - 在 R/Shiny 中,有没有办法为 renderTree 创建进度条
- c - cygwin tty下msvc编译的程序输出不同
- python - Pyside6中的打印预览页面方向
- azure-monitoring - 如何使用 Powershell 或任何其他方法每天在 csv 中导出 Azure vm 指标数据?
- c# - 未授予所需的权限。必须至少授予以下权限之一: 管理组织树
- typescript - TypeScript 导入以不一致的方式包装在模块中
- loops - 内循环运行了多少次?
- c++ - 关于 vcpkg 和 pcl/visualization 的问题