如何通过 Jenkins 使用 Power Shell 脚本插件创建环境变量和更改 JSON 文件

How to Create Environment Variables and alter a JSON file using Power Shell Script Plugin through Jenkins

我在 %Workspace%\solution\config\appsettings.json

有以下 JSON 文件
{
"appName": "Test",
"appId": "1",
"env" : "Test",
"url" : "https://url.com",
"client_id": "",
"client_secret": "",
"QAEmail" : "itteam@email.com",
"Preuri" : "https://preuri.com",
"Ravuri" : "https://Ravuri.com",
"Q&A"    : "https://QandA.com"
}

由于安全问题,我无法将客户端 ID 和客户端密码提交给 git,但我需要它们通过 Jenkins 运行 我的 API 测试脚本.

因此我们需要使用环境变量将上面的 json 文件更改为以下文件。我已经创建了两个带有秘密文本 CLIENT_IDCLIENT_SECRET 的全局凭证。

谁能帮我写一个windows批处理命令来用CLIENT_IDCLIENT_SECRET替换上面的json文件?

例如如果CLIENT_ID = 123456CLIENT_SECRET = 654321,json 文件应更改为以下内容。

{
"appName": "Test",
"appId": "1",
"env" : "Test",
"url" : "https://url.com",
"client_id": "123456",
"client_secret": "654321",
"QAEmail" : "itteam@email.com",
"Preuri" : "https://preuri.com",
"Ravuri" : "https://Ravuri.com",
"Q&A"    : "https://QandA.com"
}

如有任何帮助,我们将不胜感激。

  1. 获取合适的命令行编辑器(为此我们使用 SED,在 CygWin、UnixUtils、GnuWin32 等中可用)

  2. 将可识别的占位符放在要编辑的地方:

{ "client_id": "@client@" "client_secret": "@secret@" "Environment" : "Test" "Username" : "rocky" "Password"“"rock123" }

  1. 通过编辑器传输文件以替换占位符。

我给你写了一个小脚本:

set "file=test.json"
set "tmpF=%TEMP%\appsettingsJSON_%time:~9,2%.json"
set "tab=    "
for /F "tokens=1* delims=: " %%V in (%file%) do if %%V=="client_id" ( echo %tab%%%V:"%CLIENT_ID%">>%tmpF% ) else ( if %%V=="client_secret" ( echo %tab%%%V:"%CLIENT_SECRET%">>%tmpF% ) else ( if [%%W]==[] ( echo %%V>>%tmpF% ) else ( echo %tab%%%V:%%W>>%tmpF% ) ) )
move "%tmpF%" "%file%"

对我有用,你必须用你的 json-file

的路径替换 "test.json"

实际上,我尝试过这种方式并且像魔术一样工作。

第 1 步: 替换你的 JSON 文件,如下所示

{
"appName": "Test",
"appId": "1",
"env" : "Test",
"url" : "https://url.com",
"client_id": "CLIENT_ID_VALUE",
"client_secret": "CLIENT_SECRET_VALUE",
"QAEmail" : "itteam@email.com",
"Preuri" : "https://preuri.com",
"Ravuri" : "https://Ravuri.com",
"Q&A"    : "https://QandA.com"
}

第 2 步: 将以下插件安装到 Jenkins

   **1)** Credentials plugin 

   **2)** Credential Binding Plugin

   **3)** Windows Power Shell Plugin

第 3 步: 使用凭据插件(其中你会在 Jenkins 的左侧找到它,你将在那里创建一个新工作)。现在使用绑定选项卡创建环境变量 "CLIENT_ID_VALUE" 和 "CLIENT_SECRET_VALUE"。

第4步:现在添加一个步骤来执行Windows Power Shell并将下面的脚本写入其中

(gc 'C:\Documents\application.json') -replace 'CLIENT_ID_VALUE', $env:CLIENT_ID_VALUE | Out-File 'C:\Documents\application.json'

(gc 'C:\Documents\application.json') -replace 'CLIENT_SECRET_VALUE', $env:CLIENT_SECRET_VALUE | Out-File
 'C:\Documents\application.json'