8

所以我为我的 PHP 项目设置了以下内容:

  • 包含所有代码的 Git 存储库。
  • 一个带有 PhpUnderControl 在其上运行的 Cruisecontrol 实例。

我在 Cruisecontrol 项目目录中创建了一个新项目,并设置了一个轮询器以每 2 分钟检查一次 git repo 上的更改。我在这个 Cruisecontrol 实例中运行了 2 个项目,我设置的第一个项目运行良好。

我在 Platform 项目中遇到的问题在错误日志中如下所示:

2010-02-04 06:07:27,076 [Thread-14061] INFO 项目 - 项目平台:引导  
2010-02-04 06:07:27,077 [Thread-14061] INFO ProjectController - 平台控制器:构建进度事件:引导  
2010-02-04 06:07:27,496 [Thread-14061] 信息 GitBootstrapper - 已经是最新的。  
2010-02-04 06:07:27,500 [Thread-14061] INFO 项目-项目平台:检查修改  
2010-02-04 06:07:27,500 [Thread-14061] INFO ProjectController - 平台控制器:构建进度事件:检查修改  
2010-02-04 06:07:27,583 [Thread-14063] WARN Git - 警告:“”的日志只能返回到 2010 年 1 月 26 日星期二 13:43:11 -0500。  
2010-02-04 06:07:27,584 [Thread-14063] 警告 Git - 致命:无效的修订范围 @{ 1264038932}..@{ 1265281647}  
2010-02-04 06:07:27,584 [Thread-14061] INFO 项目 - 项目平台:未发现修改,无需构建。  
2010-02-04 06:07:27,584 [Thread-14061] INFO 项目-项目平台:空闲  
2010-02-04 06:07:27,584 [Thread-14061] INFO ProjectController-平台控制器:构建进度事件:空闲

这里奇怪的是,当我检查项目目录时,代码库会更新。(我在我的工作目录中测试了一些小提交。)问题是,自从 Git 出错以来,这从未运行任何其他构建过程。

如果我直接进入projects/platform目录并执行 git pull,它工作正常。从项目目录进行 ant 构建也可以正常工作。

以下是相关的配置文件:

<project name="platform" buildafterfailed="false">
    <plugin name="git" classname="net.sourceforge.cruisecontrol.sourcecontrols.Git" />

    <modificationset quietperiod="60">
        <git localWorkingCopy="projects/${project.name}/" />
    </modificationset>

    <bootstrappers>
        <gitbootstrapper localWorkingCopy="projects/${project.name}/" />
    </bootstrappers>

    <schedule interval="120">
        <ant antscript="/usr/bin/ant" buildfile="projects/${project.name}/build.xml" />
    </schedule>

    <listeners>
        <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
    </listeners>

    <log dir="logs/${project.name}">
        <merge dir="projects/${project.name}/build/logs/" />
    </log>

    <publishers>
        <artifactspublisher dir="projects/${project.name}/build/api"
                            dest="artifacts/${project.name}"
                            subdirectory="api"/>
        <artifactspublisher dir="projects/${project.name}/build/coverage"
                            dest="artifacts/${project.name}"
                            subdirectory="coverage"/>
        <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/>
        <execute command="phpcb 
                          --log projects/${project.name}/build/logs
                          --source projects/${project.name}/lib/model
                          --ouput projects/${project.name}/build/php-code-browser" />
        <artifactspublisher dir="projects/${project.name}/build/php-code-browser"
                            dest="artifacts/${project.name}"
                            subdirectory="php-code-browser" />
    </publishers>
</project>

我对 git 错误的搜索并没有给我任何好的见解,所以希望这里有人知道!

4

2 回答 2

1

看起来没有为 git 设置分支来结帐。我不知道如何立即解决这个问题,但这可能是前进的方向。

于 2010-02-15T11:59:45.200 回答
1

快速解决:

解决此问题的最简洁和最快的方法是在项目标签上设置 requireModification="false"。等待构建触发,然后再次设置 requireModification="true"。这将产生在可用 git 日志更改范围内创建新的先前构建日期的效果。

细节:

当我在我的巡航控制环境中重新克隆我的存储库时,这发生在我身上。这会产生一个问题,即存储库日志的本地工作副本不会追溯到 Cruisecontrol 执行的最后一次构建。

发生的情况是您的最后构建日期早于本地工作存储库中最旧的更改记录:(哎呀。

这在 gitbootstrapper 中没有发生。你的引导程序执行得很好。

请参阅:2010-02-04 06:07:27,496 [Thread-14061] 信息 GitBootstrapper - 已经是最新的。

没有错误。我们很好。

Git 正在报告该问题,由 ProjectController 在调用“getModifications”时执行

看:

2010-02-04 06:07:27,500 [Thread-14061] INFO ProjectController - 平台控制器:构建进度事件:检查修改
2010-02-04 06:07:27,583 [Thread-14063] WARN Git - 警告:记录'' 只能追溯到 2010 年 1 月 26 日星期二 13:43:11 -0500。

Git 类中执行的代码在 net.sourceforge.cruisecontrol.Git.getModifications

执行的命令是:

git log -p --pretty=raw @{timestamp}..@{timestamp}

例如: git log -p --pretty=raw @{1292455850}..@{1299108639}

基本问题是参数被传递到第一个时间戳,巡航控制正在做它被编程做的事情,但我们要求它检查我们的存储库没有记录的日期之间的变化,如果 requireModification="true",然后它将在没有发现任何修改的情况下关闭!

于 2011-03-03T22:56:43.977 回答