使用VSTS进行持续部署,配置转换不起作用

时间:2017-12-08 22:30:22

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

我正在为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)\内容\ d_C \一个\ 1 \ S \ APPS \项目名\项目名\ OBJ \发布\包\ PackageTmp \ Web.config中

1 个答案:

答案 0 :(得分:2)

文件转换&变量替换 Azure App Service部署任务中的选项,因此您可以使用 XML变量替换或J SON变量替换来执行此操作不解压缩包文件(zip文件):

例如:

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

    另一种方法是您可以通过Token replace task更改 Web部署参数文件(SetParameters.xml)中的值(您还可以在Azure App Service Deploy任务中指定不同的文件per to Release of Environment,例如SetParameters.Dev.xml,SetParameters.QA.xml)

    关于Configuring Parameters for web package deployment

    的文章

    BTW:您可以通过指定/P:PackageTempRootDir="" msbuild参数

    从Web部署包中删除源结构