VSTS释放管道 - 令牌替换

问题描述 投票:1回答:2

我一直在使用Replace Tokens(来自VS Marketplace),到目前为止,它在web.config文件中的动态连接字符串替换方面做得很好。它的工作方式,在We​​b.Release.config我有这样的结构:

<connectionStrings>
    <add name="Default"
        connectionString="__AzureDBConnectionString__"
        xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/>
</connectionStrings>

当我在VSTS中开始发布时,它将此标记(在“__”之间)替换为发布管道中的变量值。所以,我总是有一个与相关环境相对应的连接字符串。昨天我决定在这个文件中添加一些更多的变量,希望它也可以正常工作,因为我有很多键应该出于安全原因进行参数化。好吧,如果我添加这样的文件:

<appSettings>
        <add key="mailToken" value="__mailToken__" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" />
</appSettings>

它不起作用。在部署的web.config中,我看到value =“mailToken”,即它不会被存储在发布管道中的变量替换(对于连接字符串)。经过大约一天的痛苦,我发现唯一可以替换的参数是连接字符串(因为这是构建“Web.SetParameters.xml”文件自动生成的唯一参数集)。一些消息来源建议我尝试使用parameter.xml文件,但没有成功。重要的是所有变量都来自发布管道变量列表(而不是在配置文件中硬编码)。有人可以建议一种正确的方法来替换appSetting中的值或其他解决方法(没有替换令牌任务等)吗?

azure-devops azure-pipelines-release-pipeline
2个回答
2
投票

根据您的描述,您正在使用Web部署包(Web.SetParameters.xml),默认情况下,Web.Release.config中的appSettings不会添加到Web.SetParameters.xml文件中,但会替换Web中的值。生成Web部署包时直接配置文件,因此web.config文件(在zip包文件中)中的mailToken值将为mailToken。

因此,替换它的简单方法是在IIS Web App Deploy或Azure App Service Deploy任务的“文件转换和变量替换选项”部分中使用XML变量替换。您只需要将具有相同名称键值(mailToken)的变量添加到发布定义中,并检查XML变量替换选项。 (不需要在Web.Release.config中配置它)

更多信息,请参考:XML variable substitution


0
投票

我最近也在与类似的东西挣扎,直到今天才来到solution。我的主要挂断是在我的项目目录中定义parameters.xml文件,因为这与用于Web部署的vsts-tasks发布任务中定义的一些自动替换逻辑冲突。我只为不能通过VSTS自动处理的属性定义parameters.xml。

此外,我建议在“构建解决方案”下将此msbuild参数添加到构建作业,这将阻止VSTS在Web部署包的setparameters.xml文件中添加连接字符串。

/p:AutoParameterizationWebConfigConnectionStrings=false

最终,如果这不起作用,您将需要在环境变量中将System.debug设置为true,以便您可以准确地查看发布期间发生的情况。不幸的是,你在system.debug上看到的调试日志记录并不是很好,但它们可能会有所帮助。

祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.