Подстановка переменных в файле .config с помощью Octopus Deploy 3

Я использую 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


person Darren Guy    schedule 15.03.2016    source источник


Ответы (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 правильно, это должно получить значение, введенное до того, как произойдет преобразование.

Надеюсь это поможет

person Evolve Software Ltd    schedule 15.03.2016
comment
Привет. К сожалению, Octopus до сих пор не заменяет переменную данными, определенными в проекте. Он оставляет его как #{data.folder} - person Darren Guy; 16.03.2016
comment
И просто чтобы подтвердить, что существует среда с именем ci, и переменная data.folder в Octopus Deploy не выходит за рамки (привязана к другой среде). Я знаю, что также были проблемы с чувствительностью к регистру в именах сред, поэтому было бы хорошо убедиться, что они совпадают (env = CI и file = CI.config). В логах есть что-нибудь по разбору файла на подстановки? - person Evolve Software Ltd; 16.03.2016
comment
Переменная определяется в проекте. Я не установил область действия переменной. Имя среды CI, все в верхнем регистре, и файл преобразования, CI тоже в верхнем регистре - person Darren Guy; 16.03.2016
comment
С вашей помощью и с Октопусом проблема решена. Я использовал #{Octopus.Environment.Id} в подстановочных переменных, хотя должен был использовать #{Octopus.Environment.Name}. Оказывается, это был Id, который возвращал «Environments-1». Переключение с .Id на .Name устранило проблему. - person Darren Guy; 18.03.2016