обновление файла веб-конфигурации с помощью задачи Azure cli

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

$storageConectionString="DefaultEndpointsProtocol=https;AccountName="+$storageAccountName+";AccountKey="+$value+";EndpointSuffix=core.windows.net" 
$sqlConnectionString ="server=tcp:"+$sqlServerName+";database="+$databasename+";UID=AnyString;Authentication=Active Directory Interactive" 

#file path in azure repo
$configFilePath = "$visualStudioFolder/NRMAPP//NRMAPP/NRMAPP/Web.config"

$myXML = [Xml] (Get-Content $configFilePath)

$sqlConnectionObj = $myXML.configuration.connectionStrings.add
$sqlConnectionObj.connectionString = $sqlConnectionString

write-output $sqlConnectionObj



$storageConnectionObj = $myXML.configuration.appSettings.add | where {$_.Key -eq "StorageConnectionString" }
$storageConnectionObj.value = $storageConectionString

write-output $storageConnectionObj

$myXML.Save($configFilePath)

Конвейер сборки работает успешно, но не вносит изменений в файл конфигурации в репозитории Azure. Любая помощь приветствуется заранее.


person aswin    schedule 05.04.2020    source источник
comment
Вы уверены в создаваемом вами $ configFilePath? Прямая косая черта и даже двойной // .. Вы получаете сообщения об ошибках? Если да, добавьте их к вопросу.   -  person Theo    schedule 05.04.2020
comment
@Theo я уверен, что double // не вызывает проблемы, я могу прочитать содержимое файла, используя ту же переменную пути   -  person aswin    schedule 05.04.2020
comment
Да, но работает ли $myXML.Save($configFilePath) без проблем с этим путем? Что именно содержит $ configFilePath? Возможно, файл записан, но в каком-то месте назначения вы не ожидаете ..   -  person Theo    schedule 05.04.2020
comment
Я тоже пытался сохранить его по другому пути, но он просто не создает новый файл   -  person aswin    schedule 05.04.2020
comment
Что, если вы жестко запрограммируете путь назначения к локальному жесткому диску. Если это сработает, вы наверняка будете знать, что путь может быть приемлемым для Powershell (Get-Content), но когда дело доходит до сохранения с помощью метода .NET, он интерпретирует путь по-разному. (текущий путь к папке для .NET отличается от пути к PowerShell, и вам нужно ввести здесь абсолютный путь)   -  person Theo    schedule 05.04.2020
comment
Привет, @aswin. Вы проверяли приведенные ниже сценарии, как все прошло?   -  person Levi Lu-MSFT    schedule 09.04.2020


Ответы (2)


  • Конвейер сборки работает успешно, но не вносит изменений в файл конфигурации в репозитории Azure.

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

Если вы хотите внести изменения в свое лазурное репозиторий. Возможно, вам придется использовать другую задачу сценария для запуска команд git. Пожалуйста, ознакомьтесь со сценариями ниже:

- powershell: | 
        git config --global user.email "[email protected]"
        git config --global user.name "yourUsername"

        #git add filename.ext
        git add .
        git commit -m "message" 

        git push https://$(System.AccessToken)@dev.azure.com/yourOrg/yourProj/_git/repoName HEAD:master -q
person Levi Lu-MSFT    schedule 06.04.2020

Нет необходимости писать это самому. задача развертывания службы приложений поддерживает преобразование конфигурации XML во время развертывания с помощью parameters.xml для определения преобразований и setparameters.xml для определения значений.

person Daniel Mann    schedule 05.04.2020