使用nant构建存档并将其显示在cruisecontrol.net包列表中

时间:2011-01-17 21:42:37

标签: cruisecontrol.net nant

我不确定这是否可行,但目前我正在使用带有nAnt脚本的CruiseControl.net构建服务器来处理所有构建,测试和打包。我有nAnt操纵一些文件并存档它们。有没有办法显示nAnt脚本在CruiseControl.net包列表中生成的zip文件?我正在使用ccnet 1.5和nAnt 0.91 alpha2。

感谢。

2 个答案:

答案 0 :(得分:1)

经过大量研究,我得出了这样的结论:

  1. 包仅显示与该版本相关的文件。
  2. 您只能在CCNet.config
  3. 中构建这些软件包
  4. 如果您手工制作包,它将在构建服务器
  5. 中损坏

    有可能创建包并删除文件夹中的所需文件,但你必须修改几个统计文件,但是我没有,但是我放弃了,没有人对此作出回应。

答案 1 :(得分:0)

我这样做是因为我对ccnet的软件包发布者不满意。首先,你需要欺骗ccnet创建一个虚拟包;该包将在[ArtifactDirectory] ​​\ [CCNetLabel]中创建。然后运行一个nant脚本替换包并更新包xml。

ccnet config:

<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>

恶性:

<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网页中正确显示包大小。