azure-devops - 如何在部署时使用变量而不是 XML 转换来转换 Web.Config?
问题描述
我们目前有以下在部署时Web.Release.config
转换的文件。Web.config
<?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>
如您所见,配置文件包含敏感信息,例如password
.
管道工件包含脚本、内容、捆绑包以及与此问题最相关的Web.Debug.config
,Web.Release.config
和Web.config
:
发布工件时,发布管道会触发 Azure 应用服务任务部署:
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
而不是 XML 转换是改变属性password
,甚至是to
电子邮件属性,我们希望将它们存储为变量,可能在发布管道中(可能创建一个elmah
包含这些属性/值的组)并使用这些变量来转换Web.config
文件。当然,我们仍然希望出现其他 XML 转换设置,例如,但我们希望使用变量而不是 XML 文件来转换<system.web>
像 in 这样的属性。<elmah>
我们怎样才能做到这一点?我知道如何创建变量,但我不确定如何或是否可以Web.config
使用变量而不是Web.Debug.config
或Web.Release.config
有没有可以做到这一点的设置/任务?
解决方案
我不确定如何甚至是否可以使用变量而不是 Web.Debug.config 或 Web.Release.config 来转换 Web.config 文件
我们可以安装扩展Replace Tokens,添加变量并将变量设置为机密,然后添加任务 Replace Tokens 以替换web.configure
变量并在 Azure DevOps 管道中使用它。
更新1
打开.csproj
文件并添加字段<CopyToOutputDirectory>Never</CopyToOutputDirectory>
,它不会复制Web.Release.config
文件。
<None Include="Web.Release.config">
<DependentUpon>Web.Release.config</DependentUpon>
<CopyToOutputDirectory>Never</CopyToOutputDirectory>
</None>
推荐阅读
- sql-server - SQL Server:如果结果相同并将 24 小时转换为 12 小时而不使用 where 方法,那么 min 和 max 如何空白另一行
- visual-studio - 为什么这个 D 程序会抛出一个奇怪的访问冲突异常?
- python - 添加到字典键
- angular - 反应式表单嵌套组件不起作用
- microsoft-graph-api - "未找到与请求 URI 'https://subscriptionstore.windows.net/1.0/subscriptions' 匹配的 HTTP 资源。",
- flutter - 静态谷歌地图(禁用所有手势)
- javascript - Status-415 在 nodejs 中指定的内容类型无效错误
- c - 为什么'sizeof'运算符返回一个字符的值 4?
- oracle - 如何将一个表字段中的表达式计算为另一个?
- python - Python:使用 Redis PubSub 将通知推送到 Node.js Socket.io