Как заменить учетные данные и другие секреты при локальном построении с помощью Visual Studio? - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу сохранить учетные данные и другие секреты из моего репозитория git.По разным причинам (я работаю над разветвленным репозиторием GitHub) учетные данные хранятся в классе, а не в файле конфигурации.

Для создания на базе Центра приложений Microsoft я успешно заменяю учетные данные наПеременные среды с использованием следующего сценария:

#!/usr/bin/env bash

echo "Updating user settings..."
SettingsFile=$APPCENTER_SOURCE_DIRECTORY/Client/MyApp/Helpers/UserSettings.cs

sed -i '' "s/APPCENTER_MICROSOFT/$APPCENTER_MICROSOFT/g" $SettingsFile
sed -i '' "s/APPCENTER_ANDROID/$APPCENTER_ANDROID/g" $SettingsFile
sed -i '' "s/APPCENTER_IOS/$APPCENTER_IOS/g" $SettingsFile

echo "Updating cloud service settings..."
CloudServiceFile=$APPCENTER_SOURCE_DIRECTORY/Client/MyApp/Services/SurveyCloudService.cs
sed -i '' "s/APP_NAME_REPLACE/$APP_NAME_REPLACE/g" $CloudServiceFile

echo "Settings updated"

Проблема, с которой я столкнулся сейчас, заключается в том, что мне также необходимо выполнять эти замены при локальном тестировании.Могу ли я использовать события сборки для замены токенов без постоянного изменения исходных файлов (возможно, с использованием файла .bat, добавленного в .gitignore), или есть лучший способ сделать это?

Редактировать: Мое текущее решение - сохранить учетные данные, внеся изменения в файлы, а затем использовать git stash save credentials для отслеживания изменений.Затем, если мне нужно построить локально, я могу применить изменения, используя git stash list и git stash apply stash@{<n>}.После завершения тестирования и отладки я могу использовать git reset --hard для удаления учетных данных.Это работает, но должно быть более элегантное решение.

1 Ответ

0 голосов
/ 15 апреля 2019

Более элегантным решением было бы иметь отдельные каталоги для вашего исходного дерева и вашей локальной среды тестирования.Например, вы можете создать каталог target/ или dist/, который будет либо находиться за пределами рабочего дерева git, либо исключен .gitignore.

Работа процесса сборки заключается в заполнении локальной среды на основе того, что находится висходное дерево (и, возможно, другая информация, такая как переменные среды).Таким образом, замена соответствующих учетных данных становится шагом в процессе сборки, ничем не отличающимся от того, как будут создаваться ваши производственные (и / или подобные) среды.Поскольку изменения применяются к копии, которая не была возвращена, вам не нужно беспокоиться об их откате (или, что еще хуже, о случайной фиксации без отката и предоставлении конфиденциальных данных вв принципе необратимый способ).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...