如何通过 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_ID
和 CLIENT_SECRET
的全局凭证。
谁能帮我写一个windows批处理命令来用CLIENT_ID
和CLIENT_SECRET
替换上面的json文件?
例如如果CLIENT_ID = 123456
和 CLIENT_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"
}
如有任何帮助,我们将不胜感激。
获取合适的命令行编辑器(为此我们使用 SED,在 CygWin、UnixUtils、GnuWin32 等中可用)
将可识别的占位符放在要编辑的地方:
{
"client_id": "@client@"
"client_secret": "@secret@"
"Environment" : "Test"
"Username" : "rocky"
"Password"“"rock123"
}
- 通过编辑器传输文件以替换占位符。
我给你写了一个小脚本:
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'
我在 %Workspace%\solution\config\appsettings.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_ID
和 CLIENT_SECRET
的全局凭证。
谁能帮我写一个windows批处理命令来用CLIENT_ID
和CLIENT_SECRET
替换上面的json文件?
例如如果CLIENT_ID = 123456
和 CLIENT_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"
}
如有任何帮助,我们将不胜感激。
获取合适的命令行编辑器(为此我们使用 SED,在 CygWin、UnixUtils、GnuWin32 等中可用)
将可识别的占位符放在要编辑的地方:
{ "client_id": "@client@" "client_secret": "@secret@" "Environment" : "Test" "Username" : "rocky" "Password"“"rock123" }
- 通过编辑器传输文件以替换占位符。
我给你写了一个小脚本:
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'