【问题标题】:VSTS release management transform web.configVSTS 发布管理转换 web.config
【发布时间】:2016-09-06 11:02:30
【问题描述】:

我正在使用新的 VSTS 版本管理将我的网站部署到 Azure Web 应用程序。我想要的只是为 QA​​ 环境转换一个连接字符串。我发现很难得到答案。任何帮助深表感谢。

我不想在我的 Web 配置文件中创建令牌,因为我想在我的本地环境中使用该配置文件。

【问题讨论】:

    标签: visual-studio azure azure-pipelines azure-pipelines-release-pipeline


    【解决方案1】:

    您还可以使用包含连接字符串的 VSTS 变量作为连接字符串部署到 Azure WebApp。

    这看起来像是我的开源 VSTS 任务的无耻插件。但对于您的问题,这是一个干净且简单的解决方案。我的任务可用于部署在 VSTS 中配置为变量的 appsettings 和连接字符串,以部署到 Azure webapp。无需更改 web.config。

    查看市场以在 VSTS 中安装它并获取文档:https://marketplace.visualstudio.com/items?itemName=pascalnaber.PascalNaber-Xpirit-WebAppConfiguration

    【讨论】:

    • 谢谢帕斯卡。我没有意识到 azure 网站会从门户应用程序设置中获取连接字符串。我想知道为什么您的任务没有更新 web.config 文件。但它正在更新门户设置。如果 azure 网站从门户中选择它,为什么我们需要变量?它们可以在门户中设置一次,然后就这样离开。想知道你对此的看法。
    • 您可能需要一个包含连接字符串的变量,而不是在 azure 门户中硬编码的值,原因有多种。例如,这取决于您应用持续交付的范围。开发人员不必访问生产 Azure webapp。但是 VSTS 版本可以通过服务主体来实现。
    【解决方案2】:

    从安全角度来看,在源代码管理中存储连接字符串(本地开发人员除外)远非最佳做法。
    构建/发布管理系统允许您拥有可以在流程中重复使用的秘密变量和/或服务端点。
    但是,您应该在构建步骤(MSBuild 参数)中查看发布交换器,它将要求 Visual Studio 执行发布并应用来自配置转换文件和发布配置文件的转换。
    /p:DeployOnBuild=true /p:WebPublishMethod=Package /p:PackageAsSingleFile=true /p:SkipInvalidConfigurations=true /p:PackageLocation="$(build.stagingDirectory)"

    【讨论】:

    • 感谢您的回复。我想使用在给定环境的 VSTS 发布管理中定义的环境变量来更新配置文件。我需要帮助才能做到这一点。您是否尝试过并让它发挥作用?
    • 在流程(部署)的这一点上,使用 web.BuildConfig.config 的配置转换应该已经完成​​。但是,您可以在 azure 部署步骤中使用一些“脚本”来执行此操作,例如 azure 部署步骤的附加参数中的-connectionString @{"$(ConnectionStringName)"="Server=tcp:$(ServerName).database.windows.net,1433;Database=$(DatabaseName);User ID=$(AdministratorLogin)@$(ServerName);Password=$(AdministratorLoginPassword);Trusted_Connection=False;Encrypt=True;"}
    • 如您在此处看到的github.com/Microsoft/vsts-tasks/blob/master/Tasks/… 它依赖于 Publish-AzureWebsite cmdlet 您要传递的任何其他参数都必须对应于命令的参数之一。
    【解决方案3】:

    这是我在我的构建定义上的 Visual Studio 构建任务中的 MSBuild Arguments 中的内容,它的工作原理就像一个冠军:

    /p:DeployOnBuild=True;PublishProfile="$(BuildConfiguration)" /p:publishUrl="$(Build.ArtifactStagingDirectory)" /p:DeleteExistingFiles=True /p:WebPublishMethod=FileSystem /p:DeployDefaultTarget=WebPublish
    

    请注意,我将 BuildConfiguration 作为变量,例如对应于 UATReleaseDev。 PublishProfile 对应于您在项目/解决方案中设置的发布配置文件。 (因此,如果您将发布配置文件命名为“Hey-Go-To-Dev”,那么您将在 BuildConfiguration 中放入“Hey-Go-To-Dev”(或您可以设置的新变量)。

    无论如何:这将执行您的发布配置文件并在您的 web.config 文件中进行任何相关的转换。

    神速。

    【讨论】:

      猜你喜欢
      • 2018-04-11
      • 2014-07-01
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多