我有settings.properties文件,其中有许多键值对,如下所示
browserName=Chrome
ExecutionMode=Local
字符串
我正在使用settings.properties文件传递输入参数以运行自动化脚本。
例如,当我使用build参数运行jenkins作业时,我输入browserName作为InternetExplorer,它应该替换settings.properties文件中的值。
我正在使用下面的命令来实现我的目标。
第一个月
但它并没有取代“browserName=Chrome”,而是在末尾添加了“browserName=InternetExplorer”。
请告诉我如何替换browserName值?
2条答案
按热度按时间yjghlzjz1#
不能使用“>>”,因为它会将数据追加到文件中。如果你使用“>”,它会在插入echo之前擦除文件的所有内容。
所以你必须使用sed命令。我认为你应该运行的命令是这样的:
sh“sed -i 's/browserName=.*/browserName=${BROWSER_NAME}/g' settings.properties“
编辑:增加了两个窗口的方法
我发给你的代码只能在linux下运行。我会让你尝试两种方法:
纯Groovy(Windows和Linux):
字符串
使用powershell(仅限windows)
型
**警告:**我没有也没有访问基于Windows的Jenkins,所以我假设powershell版本可以工作。我基于这个脚本这个博客
xqnpmsa82#
@mndrye的答案非常有用,但它包含了Groovy脚本中的一个小错误,所以不允许我编辑这个错误或将其作为评论报告,所以我在下面添加了更正的版本和一个小的解释。
应该是
config.replaceAll()
而不是a.replaceAll()
。否则,Jenkins会给出这样的错误:字符串
修正版本;
型
来解释这里发生了什么;
这与这个问题没有什么关系,但是我为像我这样的新手添加了一个小技巧,他们希望在属性文件中更改值并在这里找到方法。如果您想在声明性管道中运行这个groovy脚本,但还没有弄清楚如何实现,可以在脚本块中运行它,如下所示;
型