У меня есть файл 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"
}
Я не смогу зафиксировать идентификатор клиента и секрет клиента в git из-за проблем безопасности, но мне нужно, чтобы они запускали мои сценарии тестирования API через Jenkins.
Поэтому нам нужно изменить указанный выше файл json на файл ниже, используя переменные окружения. Я создал две глобальные учетные данные с секретным текстом CLIENT_ID
и CLIENT_SECRET
.
Может ли кто-нибудь помочь мне написать пакетную команду Windows для замены вышеуказанного файла json на CLIENT_ID
и CLIENT_SECRET
?
Например, если 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"
}
Любая помощь была бы признательна.
4 ответа
На самом деле, я попробовал этот путь и работал как по волшебству.
Шаг 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: создайте секретный текст и определите свои значения Client_Id = "12345", Client_Secret = "54321" с помощью плагина Credentials (который вы найдете в левой части Jenkins, где вы создадите новая работа). Теперь создайте переменные окружения "CLIENT_ID_VALUE" и "CLIENT_SECRET_VALUE", используя вкладку "Привязки".
Шаг 4. Теперь добавьте шаг для запуска Windows Powershell и запишите в него приведенный ниже скрипт.
(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'
Я написал вам небольшой сценарий:
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%"
У меня сработало, нужно заменить "test.json" на путь к вашему json-файлу
Получите подходящий редактор командной строки (для этого мы используем SED, доступны в CygWin, UnixUtils, GnuWin32 и т. Д.)
Поместите узнаваемые заполнители в места, которые вы хотите редактировать:
{"client_id": "@ client @" "client_secret": "@ secret @" "Environment": "Test" "Имя пользователя": "rocky" "Password" "" rock123 "}
- Передайте ваши файлы через редактор, чтобы заменить заполнители.
@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"
}
Похожие вопросы
Связанные вопросы
Новые вопросы
json
JSON (объектная нотация JavaScript) - это сериализуемый формат обмена данными, предназначенный для машинного и человеческого чтения. Не используйте этот тег для собственных объектов JavaScript или литералов объектов JavaScript. Прежде чем задать вопрос, проверьте свой JSON с помощью валидатора JSON, такого как JSONLint (https://jsonlint.com).