Создайте пакет облачной службы Azure в сборке Visual Studio Team Services

У нас есть облачная служба Azure с веб-ролью и рабочей ролью. Мы хотели бы настроить непрерывную доставку в Visual Studio Team Services, автоматически отправляя сборку в Azure при регистрации исходного кода. (QA среда). Исходный код находится на Github. Лучше не проверять секреты Github, поэтому мы проверяем только файл.csdef, а не файл.cscfg.

Каков наилучший способ создать определение сборки в VSTS, которое будет брать файл.cscfg из другого места и создавать пакет облачной службы? Где хранить файл.cscfg и как настроить сборку?

2 ответа

Решение: в конечном итоге использование пользовательских сценариев PowerShell для замены значений конфигурации в .cscfg файл с переменными VSTS. Сценарии конфигурации PowerShell выполняются для среды, определенной в конвейере управления выпусками. Примечание: переменные, определенные как секретные, должны быть переданы в качестве параметров в сценарий PowerShell, поскольку сценарий PowerShell не будет иметь доступа к этим параметрам с помощью $Env:

Мы используем Replace tokens задача, которая доступна в VSTS

Вы также можете указать префикс и суффикс для замены строки.

Тогда в вашем ServiceConfiguration.Cloud.cscfg, вы бы использовали определенный префикс и суффикс, чтобы указать, какую строку следует заменить. Значение будет взято из Variables что вы определили в VSTS. Затем вы поместите имя переменной для этого параметра между префиксом и суффиксом.

Пример ServiceConfiguration.Cloud.cscfg файл, который будет заменен Password переменная.

<Setting name="SqlPassword" value="#{Password}#" />

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

Как в случае с ServiceConfiguration "s Certificate настройка в облачной службе. Значением должен быть действительный отпечаток сертификата (любая цифра 0-9 и / или буква AF, строчные и прописные). Схема конфигурации службы определила это, и сборка не удастся, если значение не соответствует требованию схемы.

Чтобы обойти это, у нас есть другая задача в нашей версии для замены сертификата. Префикс / суффикс для этого может быть что-то вроде abc а также defсоответственно. Имя переменной будет 001, К сожалению, это не так наглядно, потому что это должен быть действительный отпечаток сертификата.

<Certificate name="MainSSL" thumbprint="abc001def" thumbprintAlgorithm="sha1" />
Другие вопросы по тегам