Используйте nant для создания архива и отображения его в списке пакетов cruisecontrol.net - PullRequest
0 голосов
/ 18 января 2011

Я не уверен, возможно ли это, но в настоящее время я использую сервер сборки CruiseControl.net со сценарием nAnt для обработки всего процесса сборки, тестирования и упаковки.Я не могу манипулировать некоторыми файлами и архивировать их.Есть ли способ отобразить этот zip-файл, созданный сценарием nAnt в списке пакетов CruiseControl.net?Я использую ccnet 1.5 и nAnt 0.91 alpha2.

Спасибо.

Ответы [ 2 ]

1 голос
/ 21 июня 2011

После долгих исследований я пришел к такому выводу:

  1. Пакеты показывают только файлы, относящиеся к этой сборке, не все.
  2. Вы можете собрать эти пакеты только внутри CCNet.config
  3. Если вы создадите пакет вручную, он будет поврежден на сервере сборки

Возможно, можно создать пакет и удалить необходимые файлы в папке, но вам придется изменить пару файлов статистики, а что нет, но я сдался, и никто не ответил на это.

0 голосов
/ 09 июля 2011

Я сделал это, потому что не был доволен издателем пакетов ccnet. Сначала вам нужно обмануть ccnet при создании фиктивного пакета; пакет будет создан в [ArtifactDirectory] \ [CCNetLabel]. Затем запустите скрипт nant, который заменит пакет и обновит пакет xml.

Конфигурация ccnet:

<publishers>
  <package>
    <name>Build-$[$CCNetLabel]</name>
    <compression>0</compression>
    <packageList />
  </package>
  <nant>
    <buildArgs>-D:PackageName="Build-$[$CCNetLabel]"</buildArgs>
    <buildFile>script.build</buildFile>
    <targetList>
      <target>PackagePublisher</target>
    </targetList>
  </nant>
</publishers>

Nant:

<target name="PackagePublisher">
  <property name="PackageDirectory" value="${CCNetArtifactDirectory}\${CCNetLabel}" />
  <property name="PackageFullPath" value="${PackageDirectory}\${PackageName}.zip" />
  <delete file="${PackageFullPath}" />
  <zip zipfile="${PackageFullPath}">
    <fileset>
       <!-- include everything you need to package -->
    </fileset>
  </zip>

  <!-- find package.xml; it is the only xml file in the PackageDirectory -->
  <foreach item="File" property="PackageXml">
    <in>
      <items basedir="${PackageDirectory}">
         <include>*.xml</include>
      </items>
    </in>
    <do>
      <xmlpoke file="${PackageXml}" xpath="//package[@name='${PackageName}']/@size" value="${file::get-length(PackageFullPath)}" />
    </do>
  </foreach>
</target>

Последняя часть обеспечивает правильное отображение размера пакета на веб-странице PackageList.

...