Я сделал это, потому что не был доволен издателем пакетов 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.