我在%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"
}
任何帮助将不胜感激。
答案 0 :(得分:1)
实际上,我尝试过这种方式,像魔术一样工作。
第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 =“ 12345”,Client_Secret =“ 54321”将创建新工作)。现在,使用“绑定”选项卡创建环境变量“ 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'
答案 1 :(得分:0)
我给你写了一个小脚本:
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文件的路径替换“ test.json”
答案 2 :(得分:-1)
@echo off
setlocal EnableDelayedExpansion
set "Field[CLIENT_ID]=123456"
set "Field[CLIENT_SECRET]=654321"
for /F "tokens=1,2 delims=: " %%a in (appsettings.json) do (
if defined Field[%%~a] (
echo %%a: "!Field[%%~a]!"
) else if "%%~b" neq "" (
echo %%a : %%b
) else (
echo %%a
)
)
输入:
{
"client_id": ""
"client_secret": ""
"Environment" : "Test"
"Username" : "rocky"
"Password" : "rock123"
}
输出:
{
"client_id": "123456"
"client_secret": "654321"
"Environment" : "Test"
"Username" : "rocky"
"Password" : "rock123"
}
答案 3 :(得分:-3)
获取合适的命令行编辑器(为此我们使用SED,可在CygWin,UnixUtils,GnuWin32等中使用)
将可识别的占位符放在要编辑的位置:
{ “ client_id”:“ @ client @” “ client_secret”:“ @ secret @” “环境”:“测试” “用户名”:“洛基” “密码”“” rock123“ }