无法在Linux上的CruiseControl中使用修改集

时间:2010-01-27 21:25:46

标签: linux cruisecontrol

我正在尝试在Linux环境中设置cruisecontrol。我有一些cc.NET的经验,但这是我第一次尝试使用'nix版本。这就是我对build.xml的所作所为:

当我运行“ant project1”时,一切似乎都有效,除了它告诉我: /opt/cruisecontrol-bin-2.8.3/projects/portal/build.xml:8:问题:无法创建任务或类型修改集 原因:名称未定义。

我似乎无法找到另一种方式来说“只有在将更改检入svn时才构建”。我使用的是CC 2.8.3。有什么想法吗?

<?xml version="1.0" encoding="UTF-8"?>
<project name="project1" basedir=".">
 <target name="checkout">
    <exec executable="svn" dir="${basedir}/source">
      <arg line="up" />
    </exec>
 </target>
 <modificationset>
    <svn localWorkingCopy="projects/${project.name}/source/"/>
 </modificationset>
 <target name="php-codesniffer">
    <exec executable="phpcs"
          dir="${basedir}/source"
          output="${basedir}/build/logs/checkstyle.xml">
          <arg line="--report=checkstyle
                 --standard=PEAR
                 --ignore=src/autoload src/"/>
    </exec>
 </target>
 <target name="publish">
 </target>
 <target name="build" depends="checkout,php-codesniffer" />
</project>

2 个答案:

答案 0 :(得分:2)

嗯......我不太关注你的设置。您发布的XML文件应该是ANT构建文件还是CruiseControl XML配置文件?

因为这两者不同。 <target>s通常显示在the ANT file中,<modificationset>CruiseControl configuration的典型内容。他们偶然使用<project>元素。

所以我建议你将<modificationset>移动到CC配置文件。还有一个选项可以告诉CC仅在找到任何修改时构建(不是默认设置吗?)。

编辑:顺便说一句,这个问题似乎与Unix本身没有任何共同之处。我倾向于相信你会在Windows上遇到同样的问题。

答案 1 :(得分:0)

对于连续构建,我使用cronjob和这个脚本:

#!/bin/bash
cd myLocalWorkingCopy
if [[ \"`/usr/bin/svn info -r HEAD`\" = \"`/usr/bin/svn info -r BASE`\" ]]; then
  echo "local working copy up to date"
else
  /usr/bin/nant -buildfile:myBuildfile.build -logfile:myLogfile.log
fi

我希望这会有所帮助......