azure-devops - 如何对 mailSettings 文件执行 XML 变量替换?
问题描述
我们有一个带有以下 system.net mailSettings 属性的 Web.config 文件:
<system.net>
<mailSettings>
<smtp configSource="mailSettings.config" />
</mailSettings>
</system.net>
mailSettings.config 文件位于项目子根目录下,仅包含以下几行:
<smtp from="reports@companyxyz.com" deliveryMethod="Network">
<network enableSsl="true" host="smtp.sendgrid.net" port="587" userName="" password="" />
</smtp>
我们希望将用户名和密码属性存储为发布管道中的变量(最终在 Azure Key Vault 中,但不在此范围内),并且在 Azure 应用程序部署任务(下面的 yaml)中有一个用于 XML 变量转换的选项/替代。
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
enableXmlVariableSubstitution: true
我已启用它,但它如何知道转换 mailSettings.config 模板文件?
这是 XmlVariableSubstitution 开关的描述:
在构建或发布管道中定义的变量将与任何配置文件和 parameters.xml 的 appSettings、applicationSettings 和 connectionStrings 部分中的“key”或“name”条目匹配。变量替换在配置转换后运行。
注意:如果在发布管道和环境中定义了相同的变量,则环境变量将取代发布管道变量。
解决方案
在您的情况下,标准替换将不起作用,因为您已经发现:
在构建或发布管道中定义的变量将与任何配置文件和 parameters.xml 的 appSettings、applicationSettings 和 connectionStrings 部分中的“key”或“name”条目匹配。变量替换在配置转换后运行。
您仍然可以通过使用扩展来实现您的目标 -替换令牌
对于默认任务配置,您需要更改文件以将令牌定义为#{VARIABLE_NAME}#
. 因此,在您的情况下,它将是:
<smtp from="reports@companyxyz.com" deliveryMethod="Network">
<network enableSsl="true" host="smtp.sendgrid.net" port="587" userName="#{USER_NAME}#" password="#{PASSWORD}#" />
</smtp>
还要确保放置正确的目标文件。
推荐阅读
- android - NativeScript:加载或拍照时出现java.lang.OutOfMemoryError
- vue.js - Vue 组合 API - 为什么它没有按预期工作
- html - 如何永久隐藏菜单项?
- list - 优化从带有文件夹的库中下载文件的脚本
- confluent-schema-registry - 如何删除主题级别的兼容性级别
- r - r中的滚动标准偏差
- python - TypeError:调用 print 时,'str' 对象不可调用
- loopbackjs - 如何在 LoopBack 4 中直接添加控制器?
- javascript - Highcharts - 如何获得点击事件的最近点
- python - 将文件转换为灰度图像