У меня есть файл 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"
}

Любая помощь была бы признательна.

1
Krishna 20 Авг 2018 в 20:27

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'
1
Krishna 22 Авг 2018 в 15:53

Я написал вам небольшой сценарий:

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-файлу

0
timlg07 20 Авг 2018 в 20:30
  1. Получите подходящий редактор командной строки (для этого мы используем SED, доступны в CygWin, UnixUtils, GnuWin32 и т. Д.)

  2. Поместите узнаваемые заполнители в места, которые вы хотите редактировать:

{"client_id": "@ client @" "client_secret": "@ secret @" "Environment": "Test" "Имя пользователя": "rocky" "Password" "" rock123 "}

  1. Передайте ваши файлы через редактор, чтобы заменить заполнители.
-4
SharpDog 20 Авг 2018 в 18:03
@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"
}
-1
Aacini 20 Авг 2018 в 21:31
51935780