如何使用Jenkins参数将值替换为属性文件

时间:2019-08-31 16:57:38

标签: jenkins echo

我有settings.properties文件,其中有许多如下的键值对

browserName=Chrome
ExecutionMode=Local

Am使用settings.properties文件传递输入参数以运行自动化脚本。

示例:例如,当我使用build参数运行jenkins作业时,我以InternetExplorer输入browserName,它应该替换settings.properties文件中的值。

我正在使用以下命令实现目标。

echo browserName=%BROWSER_NAME% >> settings.properties

但是它并没有取代“ browserName = Chrome”,而是在末尾添加了“ browserName = InternetExplorer”。

请让我知道如何替换browserName值?

1 个答案:

答案 0 :(得分:1)

您不能使用“ >>”,因为它将数据添加到文件中。如果您使用“>”,它将在插入回显之前清除文件的所有内容。

因此,您必须使用sed命令。我认为您应该运行的命令是这样的:

sh“ sed -i's / browserName =。* / browserName = $ {BROWSER_NAME} / g'settings.properties”

编辑:为Windows添加了两种方法

我发送给您的代码仅适用于Linux。我将让您尝试2种方法:

纯Groovy(对于Windows和Linux):

config = readFile "settings.properties"
newconfig = a.replaceAll("browserName=.*","browserName=${BROWSER_NAME}")
writeFile file: "settings.properties", text: "${newconfig}"

使用Powershell(仅在Windows中)

newconfig=powershell(returnStdout: true, script:"cat settings.properties | %{$_ -replace 'browserName=.*','browserName=${BROWSER_NAME}'}")
writeFile file: "settings.properties", text: "${newconfig}"

注意::我不拥有也不可以访问基于Windows的Jenkins,因此我假设Powershell版本可以使用。我基于这个脚本this博客