在使用Visual Studio进行本地构建时,如何替换凭据和其他机密?

时间:2019-04-15 09:45:08

标签: git visual-studio-2017

我想将凭据和其他机密信息保存在我的git存储库中。由于各种原因(我正在使用分叉的GitHub存储库),凭据存储在类中,而不是配置文件中。

要在Microsoft App Center上进行构建,我将使用以下脚本成功将凭据替换为环境变量:

#!/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"

我现在遇到的问题是,在本地测试时,我还需要进行这些替换。是否可以在不永久修改源文件的情况下(也许使用添加到.gitignore的.bat文件)使用构建事件来替换令牌,还是有更好的方法呢?

编辑:我目前的解决方案是通过对文件进行更改,然后使用git stash save credentials来跟踪更改来保存凭据。然后,如果需要本地构建,则可以使用git stash listgit stash apply stash@{<n>}应用更改。测试和调试完成后,可以使用git reset --hard删除凭据。它可以工作,但是必须有一个更优雅的解决方案。

1 个答案:

答案 0 :(得分:0)

更优雅的解决方案是为源代码树和本地测试环境提供单独的目录。例如,您可以创建一个target/dist/目录,该目录要么在git工作树之外,要么被.gitignore排除。

构建过程的工作是根据源树中的内容(以及可能的其他信息,例如环境变量)填充本地环境。因此,交换适当的凭据将成为构建过程中的一步,这与构建生产(和/或类生产)环境的方式没有什么不同。由于更改是应用于未签入的副本的,因此您不必担心会回滚(或更糟糕的是,意外地提交而不进行回滚并将您的敏感数据暴露在其中)。基本上是不可逆的方式。