Как передать свойство интеграции в командный файл с CruiseControlNet? - PullRequest
5 голосов
/ 07 апреля 2010

В журнале сборки моего проекта я вижу следующие свойства:

<integrationProperties>
  <CCNetProject>Gdet_T</CCNetProject>
  ...
  <LastModificationDate>4/6/2010 1:29:04 PM</LastModificationDate>
  <LastChangeNumber>10841</LastChangeNumber>
</integrationProperties>

Я хочу передать свойство CCNetProject и LastChangeNumber в пакетный файл. хорошо работает с CCNetProject, , поскольку может использоваться в пакете в качестве переменной среды %CCNetProject%.

Но не работает с другими свойствами (они не начинаются с префикса CCnet) как LastChangeNumber или LastModificationDate.

Я пытался передать его в качестве аргумента, но это не удалось!

<exec>
  <executable>$(WorkingFolderBase)\MyBatch.bat</executable>
  <baseDirectory>$(WorkingFolderBase)\</baseDirectory>
  <buildArgs>$(LastModificationDate)</buildArgs>
</exec>

Iпопытался передать его как переменную среды, но это не удалось:

<exec>
  <executable>$(WorkingFolderBase)\MyBatch.bat</executable>
  <baseDirectory>$(WorkingFolderBase)\</baseDirectory>
  <environment>
    <variable>
      <name>svn_label</name>
      <value>"${LastModificationDate}"</value>
    </variable>
  </environment>
</exec>

Результаты всегда одинаковы, когда я отображаю параметр или переменную: пустая строка или имя переменной $(svn_label)

Я уверен, что это просто, но ... я не могу найти!Есть идеи?

Ответы [ 2 ]

8 голосов
/ 07 апреля 2010

CCNET передает следующие параметры внешним программам:

CCNetArtifactDirectory 
CCNetBuildCondition 
CCNetBuildDate 
CCNetBuildTime 
CCNetFailureUsers 
CCNetIntegrationStatus 
CCNetLabel 
CCNetLastIntegrationStatus 
CCNetListenerFile 
CCNetModifyingUsers 
CCNetNumericLabel 
CCNetProject 
CCNetProjectUrl 
CCNetRequestSource 
CCNetUser 
CCNetWorkingDirectory 

Как видите, LastIntegrationStatus например, доступно через CCNetLastIntegrationStatus, но LastModificationDate например, не имеет эквивалента.

Вы можете передать дополнительные аргументы через <buildArgs> или <environment>, но внутри конфигурации CCNET. У вас есть нет доступа в свойствах интеграции, упомянутых выше.Большинство людей, начинающих с CCNET (включая меня), пробуют что-то вроде <buildArgs>$(CCNetProject)</buildArgs> и терпят неудачу.

Посмотрите на мой ответ на аналогичный вопрос .

Извините, я могуне предоставим лучшего решения.

Обновление (в отношении Предложение мыслителя ):

Использование $[$CCNetLabel] в конфигурации CCNET, похоже, не работает.

Откровенно говоря, я был бы весьма удивлен, если бы это было так.Конфигурация - это что-то статичное, тогда как CCNetLabel - это что-то динамическое, которое может меняться при каждой сборке интеграции.Предполагая, что у вас есть доступ к этим динамическим свойствам внутри конфигурации, конфигурация может меняться при каждой сборке.Поскольку изменение конфигурации означает автоматический перезапуск сервера CCNET, вы должны вызывать перезапуск сервера при каждой сборке.Не совсем желаемое поведение, правда?

0 голосов
/ 06 мая 2010

ок, нашел решение.Необходимо использовать специальную метку с именем SvnRevisionLabeller , чтобы получить версию SVN.затем он доступен через переменную окружения CCNetLabel.

http://code.google.com/p/svnrevisionlabeller/

<labeller type="svnRevisionLabeller"> 
  <url>http://mysvnrootproject/trunk</url> 
</labeller>
...