We currently have the following Web.Release.config
file that transforms Web.config
at deployment time.
<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
<system.web>
<compilation xdt:Transform="RemoveAttributes(debug)" />
</system.web>
<elmah>
<errorLog xdt:Transform="Remove" />
<errorMail xdt:Transform="Remove" />
<errorMail xdt:Transform="Insert" from="reports@companyxyz.com" to="a23cv@companyxyzteam.slack.com" subject="Dashboard Error" async="true" smtpPort="587" smtpServer="smtp.sendgrid.net" userName="apikey" password="password123" />
</elmah>
</configuration>
As you can see, the config file contains sensitive information like password
.
The pipeline artifact contains Scripts, Content, Bundles, and most relevant to this question the Web.Debug.config
, Web.Release.config
and Web.config
:
When the artifact is published, the release pipeline triggers the Azure App Service task deployment:
steps:
- task: AzureRmWebAppDeployment@4
displayName: 'Deploy Azure App Service'
inputs:
azureSubscription: '$(Parameters.ConnectedServiceName)'
appType: '$(Parameters.WebAppKind)'
WebAppName: '$(Parameters.WebAppName)'
enableCustomDeployment: true
TakeAppOfflineFlag: false
RenameFilesFlag: false
enableXmlTransform: true
Instead of the XML transformation being the one to change the attributes like password
, or even to
email attribute, we would like to store those as variables, possibly in the release pipeline (maybe create an elmah
group containing these attributes/values) and use that such variables to transform the Web.config
file.
Of course, we still would want other XML transform settings to occur, such as the <system.web>
, but we want attributes like those in <elmah>
to be transformed using variables instead of the XML file.
How can we accomplish this?
I know how to create the variables, but I am not sure how or if its even possible to transform the Web.config
file using variables instead of the Web.Debug.config
or Web.Release.config
Is there a setting/task that can do this?