【问题标题】:Variable Substitution in .config file with Octopus Deploy 3使用 Octopus Deploy 3 在 .config 文件中进行变量替换
【发布时间】:2016-03-15 14:47:17
【问题描述】:

我正在使用 Octopus Deploy v3 进行部署。

在我的项目中,我定义了一个名为 data.folder 的变量

我正在尝试使用此变量来设置使用包部署的转换文件中的值

我有以下 .config 文件

<?xml version="1.0"?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/" >
  <sitecore>
    <sc.variable name="dataFolder">
      <patch:attribute name="value">/Data</patch:attribute>
    </sc.variable>
  </sitecore>
</configuration>

以及以下 .ci.config 文件

<?xml version="1.0"?>
<configuration 
     xmlns:patch="http://www.sitecore.net/xmlconfig/" 
     xmlns:set="http://www.sitecore.net/xmlconfig/set/" 
     xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <sitecore>
    <sc.variable name="dataFolder" xdt:Transform="Replace" xdt:Location="Match(name)" set:value="#{data.folder}" />
  </sitecore>
</configuration>

这两个文件都位于文件夹 App_Config\Include

如您所见,我已在转换文件中设置变量以包含变量“{data.folder}”

在 Octopus 中,我创建了一个包部署步骤,并设置了以下功能:

  • 自定义安装目录
  • 配置变量
  • 配置转换
  • 在文件中替换变量

在文件中的替换变量中,我已经包含了目标文件

App_Config\Include\Z_Project.#{Octopus.Environment.Id}.config

我相信我已经正确地遵循了http://docs.octopusdeploy.com/display/OD/Substitute+Variables+in+Files,但是当部署运行时。 .ci.config 文件中的变量未设置。

我确信我犯了一个非常基本的错误,但我不知道我做错了什么

我需要什么来获取转换文件才能使用来自 Octopus 的变量

【问题讨论】:

    标签: octopus-deploy config-transformation


    【解决方案1】:

    听起来您的流程在步骤、变量等方面是正确的,但我认为 .ci.config 文件中的转换在预览转换后不正确。

    结果是这样的

    <sitecore>
      <sc.variable name="dataFolder" set:value="#{data.folder}"/>
    </sitecore>
    

    尝试使用

    <sitecore>
      <sc.variable name="dataFolder" xdt:Transform="Replace" xdt:Location="Match(name)">
        <patch:attribute name="value">#{data.folder}</patch:attribute>
      </sc.variable>
    </sitecore>
    

    通过 Slow Cheetah (Visual Studio Gallery) 运行它可以正确执行转换,并且如果在 Octopus Deploy 中正确设置了其他所有内容,这应该会在转换发生之前获得注入的值。

    希望对你有帮助

    【讨论】:

    • 嗨,不幸的是,Octopus 仍然没有用项目中定义的数据替换变量。将其保留为 #{data.folder}
    • 只是为了确认有一个名为 ci 的环境,并且 Octopus Deploy 中的 data.folder 变量没有超出范围(范围为另一个环境)。我知道环境名称也存在区分大小写的问题,因此最好确保它们匹配(env = CI 和 file = CI.config)。日志中是否有关于解析文件以进行替换的任何内容?
    • 变量在项目中定义。我没有在变量上设置范围。环境名称是CI,全大写,转换文件,CI也是大写
    • 在您和八达通的帮助下,问题解决了。我在替代变量中使用了#{Octopus.Environment.Id},而我应该使用#{Octopus.Environment.Name}。事实证明,它是 Id 正在返回“'Environments-1' 从 .Id 切换到 .Name 解决了这个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多