【问题标题】:VSTS Release pipeline - token substitutionVSTS 发布管道 - 令牌替换
【发布时间】:2019-12-30 16:11:18
【问题描述】:

我一直在使用 Replace Tokens(来自 VS Marketplace),到目前为止,它对 web.config 文件中的动态连接字符串替换非常有用。它的工作方式,在 Web.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="ma​​ilToken" 即它没有被存储在发布管道中的变量替换(对于连接字符串)。 经过大约一天的痛苦,我发现唯一可以像这样替换的参数是连接字符串(因为这是构建“Web.SetParameters.xml”文件自动生成的唯一参数集)。正如一些消息来源所建议的那样,我尝试使用 parameter.xml 文件,但没有成功。重要的是所有变量都取自发布管道变量列表(而不是在配置文件中硬编码)。 有人可以建议一种正确的方法来替换 appSetting 中的值或其他解决方法(没有替换令牌任务等)吗?

【问题讨论】:

  • 你解决了这个问题吗?

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


【解决方案1】:

根据您的描述,您使用的是 Web 部署包 (Web.SetParameters.xml),默认情况下 Web.Release.config 中的 appSettings 不会添加到 Web.SetParameters.xml 文件中,而是会替换该值生成Web部署包时直接在web.config文件中,所以web.config文件(在zip包文件中)的mailToken的值为mailToken

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

更多信息,可以参考:XML variable substitution

【讨论】:

    【解决方案2】:

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

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

    /p:AutoParameterizationWebConfigConnectionStrings=false
    

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

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多