【问题标题】:Using VSTS for Continuous Deployment, config transform not working使用 VSTS 进行持续部署,配置转换不起作用
【发布时间】:2017-12-11 17:06:42
【问题描述】:

我正在为 Web 应用程序设置持续部署,但在进行配置转换时遇到了问题。构建和发布都无需配置转换即可工作,但我想添加一个配置转换步骤以确保 Web 配置中包含正确的连接字符串、存储帐户等。

我在 VSTS 中使用配置转换任务。在构建过程中构建的工件是一个 zip 文件。然后我提取这些文件,它提供了一个非常深的文件结构。如果我对文件结构进行硬编码,配置转换就可以工作,但我担心这可能会改变,所以我想概括一下。如果我执行 $(mypath)/**/Web.config 它不会出错并且日志显示它正在执行转换,但是一旦完成,我会查看 Azure 中的文件并且可以看到转换实际上并不是完成或保存。

对此我的要求是我不能使用 xslt 转换或 XML 转换 (web.environment.config),因为我们希望将重要的值排除在源代码控制和 VSTS 之外。我们还在 NLog.config 上进行配置转换,这些转换以相同的方式设置并看到相同的问题。任何有关获得这种更通用的工作路径或解决此问题的不同方法的帮助将不胜感激。

其他可能有用的信息:

构建解决方案步骤中的 MSBuild 参数:

/p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.artifactstagingdirectory)\\"

路径结构 $(My.Paths.InstallDirectory)\Content\d_C\a\1\s\Apps\ProjectName\ProjectName\obj\Release\Package\PackageTmp\Web.config

【问题讨论】:

  • 您使用的是哪个配置转换任务?那是扩展名吗?
  • @jessehouwing Sergey Zwezdin 的配置转换

标签: azure-devops azure-pipelines-release-pipeline


【解决方案1】:

Azure App Service Deploy任务中有File Transforms & Variable Substituion选项,所以可以使用XML变量替换或者JSON 变量替换无需解压包文件(zip 文件):

例如:

  1. 在Release定义中添加一个新变量(范围:选择一个环境),例如:名称:DefaultConnection;值:Data source=xxx…),单击锁定图标将变量类型更改为机密。
  2. 检查Azure App Service Deploy任务中的XML variable substitution选项
  3. 然后在部署期间,如果 appSettings、applicationSettings 和 connectionStrings 部分中的键或名称条目与变量名称匹配,则任何 config 和 parameters.xml 文件都将使用该变量值进行更新

相关文章:XML variable substitution

另一种方法是,您可以通过Token replace task 更改web 部署参数文件 (SetParameters.xml) 中的值(您也可以在Azure App Service Deploy 任务中根据环境指定不同的文件发布,如SetParameters.Dev.xml、SetParameters.QA.xml)

一篇关于Configuring Parameters for web package deployment的文章

顺便说一句:您可以通过指定 /P:PackageTempRootDir="" msbuild 参数从 Web 部署包中删除源结构

【讨论】:

  • 我会使用 Azure App Service Deploy 任务中包含的转换,但我们使用的是 NLog,据我所知,我无法通过 Azure App Service Deploy 更新该配置。我认为关于删除源结构的最后一点将解决我的问题
  • 如果您不使用 Azure,但仍想利用文件转换功能怎么办?
  • @AaronHudon IIS Web App Deploy 任务也包含此功能。
  • 我添加了一个带有 web.config 转换规则的发布配置文件,然后添加了 /p:PublishProfile=publish_prod
猜你喜欢
  • 2016-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 2018-10-24
  • 2021-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多