Вы можете попробовать использовать FileTransform в конвейере выпуска для обновления значений webconfig.
Переменные, определенные в конвейерах сборки или выпуска, будут сопоставляться с записями «ключ» или «имя» в разделах appSettings, applicationSettings и connectionStrings любого файла конфигурации и parameters.xml. Подстановка переменных запускается после преобразования конфигурации.
Задача FileTransform сопоставит переменные конвейера с записями key
или name
в разделе appsettings. И обновите значение appsettings в webconfig с помощью соответствующих переменных конвейера.
Таким образом, вы можете определить переменную конвейера с тем же именем, что и записи key
или name
настройки приложения, которую необходимо изменить. При создании нового выпуска задача FileTransform изменит параметр приложения на значение переменной конвейера.
Вы также можете использовать задачу Magic Chunks для обновления настроек приложения webconfig.
Проверьте здесь, чтобы узнать, как преобразовать XML-файл с помощью волшебных патронов.
Пожалуйста, проверьте эту аналогичную тему для получения дополнительной информации.
Обновление:
Поскольку вручную создать все переменные очень сложно, вы можете попробовать использовать Variablegroups — для этого добавьте остальные API.
POST https://{instance}/{collection}/{project}/_apis/distributedtask/variablegroups?api-version=4.1-preview.1
Вам нужно написать сценарии, чтобы сначала прочитать все настройки приложений, а затем добавить все настройки приложений в остальное тело запроса API. См. пример ниже:
Например, у меня ниже настройки приложений в web.config.
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings file="custom.config">
<add key="ApplicationName" value="MyApplication" />
<add key="ApplicationName2" value="MyApplication2" />
<add key="ApplicationName3" value="MyApplication3" />
</appSettings>
</configuration>
Сначала мне нужно написать скрипт, чтобы добавить все ключи и значения в тело запроса. Затем вызовите остальные API. См. пример ниже:
$body=@{
"variables"= @{};
"type"= "Vsts";
"name"= "VariableGroup1"; #variable Group Name
"description"= "A test variable group"
}
$appConfig = New-Object XML
$appConfig.Load("path\to\web.config")
$settigs = $appConfig.configuration.appsettings
foreach($setting in $settigs.add) {
$body.variables[$setting.key]=@{value=$setting.value}
}
# Call rest api to create variable group
$url = "https://{instance}/{collection}/{project}/_apis/distributedtask/variablegroups?api-version=4.1-preview.1"
$PAT="Personal access token"
$base64AuthInfo= [System.Convert]::ToBase64String([System.Text.Encoding]::ASCII.GetBytes(":$($PAT)"))
$bodyjson = $body | convertto-json
$pipeline1 = Invoke-RestMethod -Uri $url -Headers @{authorization = "Basic $base64AuthInfo"} -Method post -ContentType "application/json" -Body $bodyjson
При использовании скриптов вам не нужно создавать группу переменных вручную.
person
Levi Lu-MSFT
schedule
12.01.2021