Как запустить проект .NET Core без каких-либо настроек в локальной среде разработки и в конвейере CI / CD? - PullRequest
0 голосов
/ 08 октября 2018

Сначала позвольте мне рассказать немного о себе

У нас есть собственный VPS, поэтому мы не хотим использовать Azure для размещения наших веб-приложений.

Мы ужеуспешно создал конвейер CI / CD для нашего VPS, установив на нем агент для проекта .NET Core.

Мы используем DevOps Azure (ранее известный как VSTS) для размещения нашего кода в GIT и обработки наших резервов иКонвейеры CI / CD.

У нас есть несколько проектов .NET Framework, в которых мы используем преобразования XTD для преобразования наших файлов web.config при доставке / развертывании, чтобы получить правильные строки подключения и другие свойства конфигурации.Это позволяет извлечь ветку master из нашего удаленного репозитория и заставить ее работать в считанные секунды в ранее не использованной (для этого приложения) среде разработки без необходимости какой-либо настройки.

Теперь чтобы перейти кмой вопрос

Основная ветвь проекта .NET Core, для которого у нас уже есть конвейер CI / CD, содержит конфигурацию в файлах json для промежуточной среды, в которую она постоянно доставляется.Когда разработчик извлекает основную ветвь, он / она сначала должен настроить их для соответствия локальной среде отладки.

Это нежелательная ситуация для нас.

Как мы можем сделать так, чтобыесли мы используем .NET Core, мы можем использовать механизм, который позволит нам работать над проектом в локальной среде отладки без какой-либо конфигурации и в конвейере CI / CD?

Что мы уже пробовали?

мы обнаружили, что у нас может быть несколько версий файла appsettings.json для различных сред, таких как appsettings.debug.json, и чем в статическом методе CreateWebhost объектаПрограммный класс мы можем вызвать или другой.Но как мы можем автоматизировать это то, что мы не смогли выяснить или найти документацию.

1 Ответ

0 голосов
/ 10 октября 2018

Хорошо, вот несколько вариантов, которые вы можете использовать СЕГОДНЯ.(есть больше вариантов / подходов)

Опция A Сконфигурируйте основную ветвь так, чтобы appsetting.development.json со строкой соединения с базой данных DEV (или самой низкой средой) удалял любую строку соединенияиз appsettings.json

Объединить мастер соответственно.Создайте переменные среды на каждом из внутренних серверов для строки подключения;Например, системная переменная среды с именем ConnectionStrings: cartDB со строкой соединения с базой данных для среды, для которой использовался внутренний сервер.Результатом этого будет то, что при запуске с использованием DEVELOPMENT в качестве переменной среды он сможет подключаться к базе данных, к которой имеет доступ каждый.Однако, поскольку все ДРУГИЕ веб-серверы имеют переменные среды со строкой подключения, они будут иметь самый высокий уровень приоритета и, следовательно, будут значения, установленные при вызове чего-либо, такого как

string connectionString = Configuration.GetConnectionString("cartDB");

. Это будет соответствовать указанным вами требованиям.выше.

Опция B: Настройте основную ветвь так, чтобы appsetting.development.json со строкой соединения с базой данных DEV (или самой низкой средой) удалял любую строку соединения из appsettings.json Поместите appsetting.staging.json, appsettings.prod.json в системе контроля версий и установите переменную имени среды на веб-серверах.: / не самый лучший из вариантов / не рекомендуется.(это стоит упомянуть, так как я видел это, у всех нас есть)

Опция C Добавьте appsetting.staging.json, appsettings.prod.json в систему управления версиями и используйте токен на местезначения строки подключения.Затем используйте какой-либо тип задачи токенизации, чтобы заменить эти токены соответствующими значениями.

...