TL; DR: . Поиск и замена заполнителей в текстовом файле на расшифрованные значения секретов в группе переменных.
Я хотел бы использовать сценарий PowerShell для получения группы переменных в конвейере выпуска, а затем перебирать список, выполняя поиск и замену выпускаемого файла.
Переменные в списке переменных являются секретами , поэтому я хочу перезаписать заполнители в файле расшифрованным значением переменных.
Значения переменных зависят от среды, поэтому я не хочу предоставлять значения во время сборки и не хочу включать расшифрованные значения в сохраненный артефакт.
Файл с заменой поиска будет использоваться при выполнении во время выпуска, но не будет развернут на хосте, поэтому будет уничтожен после завершения конвейерного выполнения.
2 ответа
Итак, я обнаружил, что, пока у меня есть токен Base64, настроенный для групп переменных (нажмите« Показать все области »при создании нового PAT), затем я могу вызвать GET https://dev.azure.com/{organization}/{project}/_apis/distributedtask/variablegroups/{groupId}?api-version=5.1-preview.1
для < a href = "https://docs.microsoft.com/en-gb/rest/api/azure/devops/distributedtask/variablegroups/get?view=azure-devops-rest-5.1" rel = "nofollow noreferrer"> получить группа переменных мне нужна.
Выше, однако, не вернет значение для секретов, хотя есть взломать / обойти это (включая несколько этапов конвейера).
Рекомендуется создать хранилище ключей в Azure и выполнять обработку либо в Powershell, либо в коде.
Поскольку мне нужно, чтобы дешифрованные значения ключей передавались в мое приложение через повторяющиеся операции поиска и замены, я реализовал скрипт Powershell в одном шаге конвейера Release и использую выходные данные на следующем шаге.
Задача Tokenization из Visual Studio Marketplace хорошо справляется с этой задачей. Вам нужно будет установить его в своей организации DevOps Azure, он доступен по адресу https: //marketplace.visualstudio.com/items?itemName=TotalALM.totalalm-tokenization
По умолчанию задача Tokenization использует двойные подчеркивания для идентификации заполнителей. Он заменит любой текст, который соответствует имени переменной в определении выпуска, если он окружен двойным подчеркиванием.
Поэтому, если вы хотите записать значение переменной с именем MySecretVariable в ваш файл, вам нужно добавить заполнитель, такой как __MySecretVariable__
, в тот файл, где вы хотите, чтобы это значение было записано.
Задача Tokenization записывает любые зашифрованные значения в файл в виде простого текста, но в журналах выпуска они будут запутаны.
Если вы храните свои переменные в группе переменных, просто свяжите это с определением выпуска и установите область для соответствующей среды.
Похожие вопросы
Новые вопросы
powershell
PowerShell - это кроссплатформенная утилита командной строки и сценариев от Microsoft. Используйте этот тег только для вопросов о написании и выполнении сценариев PowerShell. Вопросы программирования, относящиеся к кроссплатформенной версии PowerShell Core (Windows, macOS и Linux), должны быть помечены [powershell-core]. Вопросы о системном администрировании следует задавать в случае сбоя суперпользователя или сервера.