CI / CD Azure DevOps и отделение строк подключения от контроля версий - PullRequest
0 голосов
/ 09 февраля 2019

Итак, я следовал множеству различных идей / стратегий в многочисленных блогах / сообщениях SO, но мне не удалось найти решение для моей идеи.

Что я использую

  • Visual Studio 2017 v15.9.6
  • Git (управление исходным кодом)
  • CI / CD Azure DevOps
  • Служба приложений Azure (для размещения веб-API)

Цель

Цель состоит в том, чтобы использовать инструменты DevOps Azure для фиксации изменений в моем проекте, передать (с помощью Git) изменения в репозиторий DevOps Azure, заставить CI / CD построить проектируемый проект в соответствии справила конвейера для развертывания в dev / production / etc.Все это время держите строки подключения вне контроля исходного кода.

В настоящее время у меня есть веб-сайт (устаревшее веб-приложение), на котором есть определения локальных строк подключения в файле строки внешнего подключения (на основе этой статьи ПодключениеСтроки и файлы конфигурации ).Он размещается как служба приложений в Azure.В моем файле .gitignore я заставил Git игнорировать определенный файл строк подключения, чтобы он не находился под контролем исходного кода.Используя развертывание Azure из GitHub, сайт обновляется с использованием исходного кода в GitHub. Однако Мне пришлось вручную загружать файл строки подключения с ложными / неверными данными.Я использую настройки приложения Azure для определения самих строк подключения.Этот процесс работает отлично.

Проблема

У меня новый проект .Net Web API, запущенный в .Net Framework 4.7.2.Я также следовал статье, чтобы разделить строки подключения на отдельные файлы, чтобы я мог также игнорировать файл в системе контроля версий.Когда Azure DevOps создает проект, он не может сказать:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ VisualStudio \ v15.0 \ Web \ Microsoft.Web.Publishing.targets (2603,5): Ошибка: не удалось скопировать файл ConnectionStrings.config в obj \ Release \ Package \ PackageTmp \ ConnectionStrings.config.Не удалось найти файл ConnectionStrings.config.

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

Вопрос

Какие существуют другие решения / функции, которые могут помочь в реализации этого сценария?

Ответы [ 2 ]

0 голосов
/ 09 февраля 2019

Задача VSRM для публикации веб-приложений поддерживает переопределение значений в Web.config.Вы можете хранить свои секреты в VSRM и заменять их во время развертывания.См. Преобразование файла и ссылка на замену переменной # Замена XML-переменной

0 голосов
/ 09 февраля 2019

Краткий ответ: не помещайте секреты в файлы конфигурации.

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

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

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