Подтвердить что ты не робот

Лучшая практика с .gitignore для строк подключения внутри App.config или Web.config

Я пробовал несколько подходов с *.gitignore для управления строками подключения при работе с более крупной командой.

Из официального репозитория файлов .gitignore на gitignore я загрузил VisualStudio.gitignore и использовал его как отправную точку для всех проектов.

То же самое можно сделать, посетив http://gitignore.io/, набрав VisualStudio, затем загрузив файл.

enter image description here

Подход, который я использую в настоящее время, заключается в использовании Свойство SectionInformation.ConfigSource

<connectionStrings configSource="myConnectionStrings.config" />

а затем добавьте myConnectionStrings.config в .gitignore, что приятно, потому что он не добавляет всего *.config.

Также вы можете использовать тот же myConnectionStrings.config внутри другого проекта (ваш слой MyProject.Data​​strong > )

<configuration>
  <connectionStrings configSource="myConnectionStrings.config"/>
</configuration>

Не забудьте установить Копировать всегда!

enter image description here

Также я попытался использовать фильтры, как описано в Git - Игнорирование конкретной модификации файла конфигурации, но я считаю, что это перебор.

Интересно, есть ли другой подход, который считается лучшей практикой?

4b9b3361

Ответ 1

Я не могу говорить о вашей настройке, но именно так я решил эту проблему.

Во-первых, все ребята из моей команды используют локальные базы данных со встроенной безопасностью, установленные как истинные. Это означает, что когда мы проверяем файлы из исходного элемента управления, хорошо идти с локальной настройкой. Поэтому мой файл веб-конфигурации выглядит следующим образом:

<add name="appConnString"
   connectionString="Data Source=(local);Initial Catalog=MyDatabaseName;Integrated Security=True;"
   providerName="System.Data.SqlClient" />

Что касается развертывания в разных средах, первый вариант - использование преобразований. Если вы не знаете, что это такое, читайте здесь

Так как мы используем Octopus Deploy в качестве нашего инструмента развертывания, наш файл преобразования имеет строку подключения для "web.release.config", как этот

<add name="appConnString"
   connectionString="{{appConnString}}"
   xdt:Transform="Update" 
   xdt:Locator="Match(name)" />

Когда Octopus запускает курс, он захватывает web.config и перезаписывает соответствующие разделы, используя файл выпуска. Затем, в зависимости от того, к какой среде/машине/ветки я развертываю, она заменяет {{appConnString}} конфигурацией, настроенной для этого развертывания.

Я уверен, что Visual Studio имеет почти такой же процесс.

Если вам не нравится процесс Transforms. Вы также можете использовать файл parameters.xml. msdepoy использует этот файл для замены значений в файле web.config при сборке. Вы можете прочитать больше об этом здесь.

Еще одно соображение заключается в том, что если вы размещаете в Azure, вы можете настроить определенные замены конфигурации на разных слотах развертывания до производства.

Это всего лишь несколько техник, которые я использовал и видел очень эффективно. Некоторые из них немного привыкают, а также создают множество разочарований, но правильная система развертывания будет платить в долгосрочной перспективе.

Ответ 2

Возможно, немного самонадеянно, я считаю, что нет необходимости в политике добавления файлов оболочки в файл. Я никогда не слышал о "connectionStrings" перед тем, как прочитать этот вопрос, но из того, что я мог собрать, они содержат URI/учетные данные для разных бэкэндов.

Как часто изменяется бэкэнд? Еще лучше, как часто изменяется путь к файлу конфигурации? Наверное, не достаточно часто, чтобы оправдывать политику. Единственное, что вам нужно - это соглашение об именах файлов конфигурации, содержащих эти connectionStrings, чтобы легко идентифицировать их с помощью средств автоматизации.

Поэтому используйте свои инструменты или напишите script и добавьте foobarService.config из <connectionStrings configSource="foobarService.config" /> в файл .gitignore для всех ваших бэкэндов.

1. Найдите файлы.

$ find -name cs.xml

./more/configs/here/cs.xml
./cs.xml
./some/sub/folder/cs.xml

2. получить имена конфигурационных файлов

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config'

getImagesService.config
users.config
ldap.config
foobar2k.config
ratpoison.config
moo.config
foo.config
trololol.config
moreconfigz.config
myConnectionStrings.config
data.config
base.config
filebackend.config
offsitewhatever.config

3. игнорировать их

$ find -name cs.xml | xargs grep -ho '[^"]\+\.config' >> .gitignore

4. обновите свое резюме

  • Март 2014 - ведущий разработчик политики connectionString

Я сбиваю с толку, что кто-нибудь спросит совета по управлению файлом .gitignore. Это может означать, что я не вижу большой картины. Не могли бы вы уточнить свой вопрос с некоторой исходной информацией? Мне интересно, почему это важный вопрос, поскольку мне трудно понять, что существует необходимость в создании лучших методов добавления строки в файл.