Нужно установить модификацию CruiseControl в пользовательской задаче муравья - PullRequest
2 голосов
/ 03 октября 2010

Есть ли способ передать набор изменений CruiseControl в пользовательскую задачу ant?

Моя настройка: у меня есть экземпляр CruiseControl (исходный, а не CC.NET и т. П.), Который отслеживает репозиторий SVNбинарных пакетов, ожидающих тестирования.Всякий раз, когда появляется новый двоичный пакет, этот пакет должен быть отправлен на другой «тестовый хост» для его тестирования.В целом это работает с помощью пользовательской задачи ant, но имеет уловку ...

Проблема заключается в том, что бинарные пакеты создаются для нескольких архитектур.Моя пользовательская задача ant должна выбрать тот «тестовый хост», который соответствует архитектуре бинарного пакета (для этого он поддерживает внутренний список «тестовых хостов»).В настоящее время все «тестовые хосты» получают уведомление о запуске своих тестов всякий раз, когда появляется новый пакет для любой архитектуры.

Итак, моя идея идеальной логики проекта CruiseControl будет такой:

  • CruiseControl контролирует каталог SVN на предмет изменений через <modificationset> (а также локальный файл, который должен запускать все "тестовые хосты")
  • Вкл. любая модификация,CruiseControl вызывает скрипт ANT, который, в свою очередь, вызывает пользовательскую задачу ANT
  • . Для этой пользовательской задачи ANT необходимо знать , какие именно файлы были изменены, чтобы запустить запуск CruiseControl, чтобы он могвыберите правильный «тестовый хост», основываясь на именах модифицированных файлов (они содержат архитектуру в своем имени)

Мой вопрос: как я могу передать набор модификаций этой задаче ANT?

Одной из идей решения, на которую я наткнулся, был плагин «Modification Writer», но он, очевидно, доступен только для CruiseControl.NET.: - (

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Правда, файл журнала содержит всю информацию. Но вам не повезло, если вы хотите использовать его внутри своей задачи муравья. Этот файл не записывается на диск до завершения сборки. Увы, вы не можете видеть набор модификаций, когда хотите.

0 голосов
/ 14 сентября 2011

Уже нет готового решения для этого, однако решить вашу проблему несложно, выполнив следующие действия:

Для каждого проекта существует определенный файл журнала в формате .xml. Файл имеет имя, такое как это: log20110913113343.xml. Задача муравья всегда знает журнал. Теперь вам нужно извлечь необходимую информацию из этого файла, например:

 <modification type="clearcase">
  <file action="checkin">
    <revision>\main\axpro_LATESTfo\4</revision>
    <filename>expected</filename>
    <project>calibration\algorithms\test.u\DetectMarkersMetaTest</project>
  </file>
  <date>2011-09-12T14:22:28</date>
  <user>z002tv9v</user>
  <comment><![CDATA[Added file element "testcase_1.01.txt".
              Added file element "testcase_1.02.txt".
              Added file element "testcase_1.03.txt".
              Added file element "testcase_1.04.txt".
              Added file element "testcase_1.05.txt".
              Added file element "testcase_1.06.txt".]]></comment>
  <revision>\main\axpro_LATESTfo\4</revision>
</modification>

Там вы можете найти все файлы, которые были изменены текущим набором изменений. Как только вы это сделаете, вы можете передать их на свое задание и перейти оттуда. Я бы использовал xsl для извлечения нужных мне данных из файла, но, конечно, вы можете использовать любую технологию, какую захотите:)

Надеюсь, это помогло!

...