Cruisecontrol cruisecontrol 构建时间显示错误,如何调整?

violin · 发布于 2009年11月05日 · 151 次阅读
96

求助:不知道大家有没有碰到CC上构建时间显示不正确的问题: 我的是跟实际时间相差了9个小时,比如是在2009-11-05,16:06:55进行的构建, 但是在构建结果上显示的时间却是2009-11-05,7:06:55,这个时间在哪里可以设置呢?请大家指导一下,谢谢了

共收到 37 条回复
96
scmroad · #1 · 2009年11月05日

查看下你 cruisecontrol 服务器上的时区和时间

96
violin · #2 · 2009年11月05日

scmroad 于 2009-11-5 17:22 发表
查看下你 cruisecontrol 服务器上的时区和时间 [/quote]

cruisecontrol 服务器上的时区和时间是对的,这个没有错,svn服务器的时区和时间也是对的:L

96
xiaoxiang7788 · #3 · 2009年11月06日

violin 于 2009-11-5 16:08 发表
求助:不知道大家有没有碰到CC上构建时间显示不正确的问题: 我的是跟实际时间相差了9个小时,比如是在2009-11-05,16:06:55进行的构建, 但是在构建结果上显示的时间却是2009-11-05,7:06:55,这个时间在哪里可以设置呢?请大家指导一下 ... [/quote]

偶遇到过cruisecontrol时间不正确的问题。但是不知道跟你的是否一致,我是通过修改源码,获取系统时间,然后存起来,用的时候直接调用就行了。

但是不知道你指的实际时间和构建结果显示时间具体是指什么。明确一下,或者直接截几个图放在这里看一下。

96
violin · #4 · 2009年11月06日

[attach]602[/attach]

显示时间错误的地方如上图所示:时间中间有个 T ,上面显示的构建时间是1:35:29,实际上的构建时间是上午的9:35:29

感觉时区在源码里面设定了一样

96
sophia108 · #5 · 2009年11月09日

同遇到该问题,显示的是GMT +0的时间啊。

96
sophia108 · #6 · 2009年11月09日

希望有高手出来帮助解决阿。cc不提供在配置文件里设定时区。

96
scmroad · #7 · 2009年11月09日

violin 于 2009-11-6 17:35 发表
602 显示时间错误的地方如上图所示:时间中间有个 T ,上面显示的构建时间是1:35:29,实际上的构建时间是上午的9:35:29 感觉时区在源码里面设定了一样 ... [/quote]

仔细看了一下想起来了。1:35:29 和 9:35:29 差几个小时?8个啊 看来Cruisecontrol显示的是格林尼治标准时间,没有显示本地的时间,如果+8,因为我们处在东8区,那么时间就是正确的。

96
violin · #8 · 2009年11月09日

xiaoxiang7788 于 2009-11-6 16:51 发表

偶遇到过cruisecontrol时间不正确的问题。但是不知道跟你的是否一致,我是通过修改源码,获取系统时间,然后存起来,用的时候直接调用就行了。

但是不知道你指的实际时间和构建结果显示时间具体是指什么。明确一下,或者直 ... [/quote]

请问一下,这个的源码是在哪个目录下哪个文件,谢谢了

96
scmroad · #9 · 2009年11月09日

我记得我以前安装的时候是没问题的。我正在下载,一会我安装一个最新版,看看会不会出现这种情况。

96
scmroad · #10 · 2009年11月09日

这是[url]http://cruisecontrol.sourceforge.net//url][ 上的一个图片,这里的时区,时间是对的。 我有一个疑问就是大家是用 src ,还是用的 bin 安装的 Cruisecontrol?

[attach]603[/attach]

96
violin · #11 · 2009年11月09日

我用的是cruisecontrol-bin-2.8.2.zip,直接解压后,启动cruisecontrol.bat运行的

96
scmroad · #12 · 2009年11月09日

估计问题就出现在这里

96
violin · #13 · 2009年11月09日

那怎么解决?

96
xiaoxiang7788 · #14 · 2009年11月09日

Cruisecontrol有关时间的设置. 是在net.sourceforge.cruisecontrol.Project这个类下面. 我采用的办法是比较土的, 这里面有个开始时间, 例如叫time1 我自己写了一个程序去读取我自己机器的时间, 然后把这个时间hold住, 例如叫time2,然后在把time2塞到Project.java里面,替换掉time1就可以了.

96
xiaoxiang7788 · #15 · 2009年11月09日

xiaoxiang7788 于 2009-11-9 14:00 发表
Cruisecontrol有关时间的设置. 是在net.sourceforge.cruisecontrol.Project这个类下面. 我采用的办法是比较土的, 这里面有个开始时间, 例如叫time1 我自己写了一个程序去读取我自己机器的时间, 然后把这个时间hold住 ... [/quote]

全代码就不给你了, 不同的项目要求不一样的。仅供参考: 其实就是复写一下getBuildStartTime()和setBuildStartTime()两个方法而已。

package net.sourceforge.cruisecontrol; public class BuildTime { public String buildStartTime = ""; public String getBuildStartTime() { return buildStartTime; } public void setBuildStartTime(String buildStartTime) { this.buildStartTime = buildStartTime; } } 然后我把这个值塞回到了Project.java的这个位置. (红色部分) Date now = new Date(); if (projectConfig.getModificationSet() != null && projectConfig.getModificationSet().getTimeOfCheck() != null) { now = projectConfig.getModificationSet().getTimeOfCheck(); }

[color=red] BuildTime bt = new BuildTime(); bt.setBuildStartTime(DateUtil.getFormattedTime(now));

if (getLabelIncrementer().isPreBuildIncrementer()) { label = getLabelIncrementer().incrementLabel(label, buildLog.getContent()); }

然后编译这两个文件,并替换掉原来cruisecontrol.jar里面的就行了。

[[i] 本帖最后由 xiaoxiang7788 于 2009-11-9 14:17 编辑 ]

96
sophia108 · #16 · 2009年11月09日

我使用的是最新的2.8.2版本的CC,会出现相差8个小时的问题。不过 web查看构建结果时,有一个地方显示的时间是GMT+8,其他的时间都是GMT+0。使用了邮件通知系统,邮件中的构建时间,svn修改记录的时间都是GMT+0.本人不会java,特来求助.

96
sophia108 · #17 · 2009年11月09日

就只有dashboard中这一个时间是正确的阿,邮件通知中的邮件内容的时间都不对.

96
violin · #18 · 2009年11月10日

xiaoxiang7788 于 2009-11-9 14:15 发表

全代码就不给你了, 不同的项目要求不一样的。仅供参考: 其实就是复写一下getBuildStartTime()和setBuildStartTime()两个方法而已。

package net.sourceforge.cruisecontrol; public class BuildTime { public ... [/quote]

能否麻烦详细说明一下,我下了个CC2.8.2的源码,找到project.java,参照你的提示进行了修改,可以编译不通过,报错了,我是在根目录下执行的build.xml,这个貌似是将所有的内容重新编译了一遍,能不能只编译这一个类呢,你是怎么编译的呢?

96
xiaoxiang7788 · #19 · 2009年11月10日

violin 于 2009-11-10 11:49 发表

能否麻烦详细说明一下,我下了个CC2.8.2的源码,找到project.java,参照你的提示进行了修改,可以编译不通过,报错了,我是在根目录下执行的build.xml,这个貌似是将所有的内容重新编译了一遍,能不能只编译这一个类呢,你是怎么编译的呢?[/quote]

下载cruisecontrol-src-2.8.2.zip,将main\src,main\lib 还有你自己的代码导入Eclipse查看,可能会有错。但应该主要是classpath的问题,解决了之后编译Project.java和你自己写的源码就OK了。

96
sophia108 · #20 · 2009年11月10日

估计我和楼主的问题一样。我按照那个热心人的做法,修改代码,编译成功了,不过时间还是不对。后来我就自己查看跟踪代码,改好了。不过时间显示的格式,不太好看。就是20091110101426。就是一串数字的形式,不过还是正确的,以后再进一步修改格式把。 (呜呜,本机电脑不能上网的,所以代码我没办法帖,只要自己简单的敲了) 1.在文件project.java。找到builddate,DateUtil.formatISO8601(now)所在行。把DateUtil.formatISO8601换为DateUtil.getFormattedTime

2.在Modification.java中方法toElement()中,同样把DateUtil.formatISO8601换为DateUtil.formatISO8601。

原因分析:在DateUtil.formatISO8601方法中后来用到了DateUtils这个类(注意不是DateUtil,多个s),这个类是什么org.appache.ant.......,我也记不清了。估计就是它的问题,我就不用它了,问题就解决拉。

上面的全凭印象写的,如有偏差,稍后补充。

96
xiaoxiang7788 · #21 · 2009年11月10日

学习学习~~

96
violin · #22 · 2009年11月10日

sophia108 于 2009-11-10 14:05 发表
估计我和楼主的问题一样。我按照那个热心人的做法,修改代码,编译成功了,不过时间还是不对。后来我就自己查看跟踪代码,改好了。不过时间显示的格式,不太好看。就是20091110101426。就是一串数字的形式,不过还是正确的,以后再 ... [/quote]

3Q~~~参照你的提示,我修改成功了,至于时间显示为20091110101426的问题,你可以追踪[font=宋体][size=12pt]getFormattedTime,找到DteUtil.java,的下面这一句进行时间格式的定义: [/font] [font=宋体][size=12pt]public static final String SIMPLE_DATE_FORMAT = "yyyyMMddHHmmss"; [/font]

[font=宋体][size=12pt]如改成:SIMPLE_DATE_FORMAT = "yyyy-MM-dd HH-mm-ss"; [/font]

编译之后,替换原来的就可以了

[font=宋体][size=12pt]注意::/ \等符号不能使用,会报错 [/font]

[[i] 本帖最后由 violin 于 2009-11-10 15:24 编辑 ]

96
sophia108 · #23 · 2009年11月10日

you are welcome。最近也在LINUX下弄这个,大家一起学习。

96
scmroad · #24 · 2009年11月13日

violin 于 2009-11-5 16:08 发表
求助:不知道大家有没有碰到CC上构建时间显示不正确的问题: 我的是跟实际时间相差了9个小时,比如是在2009-11-05,16:06:55进行的构建, 但是在构建结果上显示的时间却是2009-11-05,7:06:55,这个时间在哪里可以设置呢?请大家指导一下 ... [/quote]

在用户邮件列表里问了一下,一个答案如下,

打开 cruisecontrol.bat 这个文件,找到下面的话 Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%" "-Duser.timezone=GMT+06:00" -jar "% LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099

加上一个设置时区的属性,如下:"-Duser.timezone=GMT+08:00" Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder"-Djetty.logs=%JETTY_LOGS%" [color=Red][b] "-Duser.timezone=GMT+08:00" [/b] -jar "% LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099

这样就可以了,我试验了一下是可行的,也是不错的。大家可以试验一下,欢迎把反馈贴上来。thx

96
scmroad · #25 · 2009年11月13日

大家试验一下,看看我这个是不是最佳答案,娃哈哈

96
violin · #26 · 2009年11月13日

scmroad 于 2009-11-13 09:11 发表

在用户邮件列表里问了一下,一个答案如下,

打开 cruisecontrol.bat 这个文件,找到下面的话 Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%" "-Duser.timezone=G ... [/quote]

偶试验了一下,还是不行啊,构建结果的时间显示没变化,还是时区错误

96
scmroad · #27 · 2009年11月13日

哪里的构建结果的时间?

为啥我这里是可以的?

96
violin · #28 · 2009年11月13日

scmroad 于 2009-11-13 12:34 发表
哪里的构建结果的时间?

为啥我这里是可以的? [/quote]

这个页面的时间 [attach]613[/attach]

96
scmroad · #29 · 2009年11月13日

violin 于 2009-11-13 14:05 发表
这个页面的时间 613 [/quote]

我设置的是东8区,也就是GMT+8 对cruisecontrol.bat的修改如下: Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%" "-Duser.timezone=Asia/Chongqing" -jar "%LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099

事实上改成下面的也是可以的 Djavax.management.builder.initial=mx4j.server.MX4JMBeanServerBuilder "-Djetty.logs=%JETTY_LOGS%" "-Duser.timezone=GMT+08:00" -jar "%LAUNCHER%" %* -jmxport 8000 -webport 8080 -rmiport 1099

发现两个页面是正常的,一个页面还是有问题 http://localhost:8080/dashboard/tab/build/detail/connectfour Dashbaord 页面是正常的,信息如下: connectfour passed (9 minutes ago) * Build Time: 13 Nov 2009 14:37 GMT +08:00 * Duration: 1 minute 0 seconds * Build: build.5 [attach]614[/attach]

http://localhost:8080/cruisecontrol/ Project 页面也是正常的,信息如下: scmroad [11/13/09 2:49 PM] Project Status (since) Last failure Last successful Label
connectfour waiting (2:45 PM) 11/13/09 3:43 PM build.7
[attach]615[/attach]

http://localhost:8080/cruisecontrol/buildresults/connectfour buildresults 页面部分是正常的,部分是有问题的。 左侧的时间显示的是正确的,而正中的构建信息时间是错误的

++++++++++++++++++++++++++++++++++++++++ 错误的部分 BUILD COMPLETE - build.7 Date of build: 2009-11-13T06:43:42 Time to build: 1 minute 0 seconds

++++++++++++++++++++++++++++++++++++++++ [attach]616[/attach]

你的情况是不是这样?

96
sophia108 · #30 · 2009年11月13日

上面帖图的正确时间在没有加上-Duser.timezone=GMT+08:00的时候,本来都是正确的。那个错误的时间我跟踪代码了,里面用到了日期格式ISO8601_DATETIME_PATTERN

ISO8601_DATETIME_PATTERN

public static final java.lang.String ISO8601_DATETIME_PATTERN

ISO8601-like pattern for date-time. It does not support timezone. yyyy-MM-ddTHH:mm:ss

不支持timezone

PS:版主很热心哦,赞

[[i] 本帖最后由 sophia108 于 2009-11-13 17:39 编辑 ]

96
scmroad · #31 · 2009年11月16日

sophia108 于 2009-11-13 17:37 发表
上面帖图的正确时间在没有加上-Duser.timezone=GMT+08:00的时候,本来都是正确的。那个错误的时间我跟踪代码了,里面用到了日期格式ISO8601_DATETIME_PATTERN ISO8601_DATETIME_PATTERN public static final java.lang.String ISO8601_DATETIME_PATTERN ISO8601-like pattern for date-time. It does not support timezone. yyyy-MM-ddTHH:mm:ss 不支持timezone[/quote]

还是你们牛啊,都跟踪到代码来。。。。让我汗颜啊

96
scmroad · #32 · 2009年11月16日

你最好还是到 cruisecontrol 的网站上提个bug吧,这样下个版本就修复了。。。

地址在这里 [url]http://jira.public.thoughtworks.org/browse/CC/url][

96
scmroad · #33 · 2009年11月16日

刚 查到了点信息: Why does my jsp page show the build and dates, but the right half of the page is blank no matter what I click on?

Your xml log file encoding is incorrect. CC puts the JVM system encoding at the top of every xml log file that it generates, and the xsl transformer on your system is not happy transforming that specific encoding. Use the "encoding" parameter of the "log" entry in the config.xml to override the xml encoding name. Try "UTF-8" or "ISO-8859-1".

http://cruisecontrol.sourceforge.net/faq.html#howtohelp

96
violin · #34 · 2009年11月16日

你们都很厉害哇,也很热心,真感动,555~~~ 这个问题太能折腾人了,我下了个2.7.3的版本,就不存在这个问题了,估计他们下个版本这个bug就修复了,不过这也让我们都学到了不少东西了,呵呵~~~

[[i] 本帖最后由 violin 于 2009-11-16 16:28 编辑 ]

96
scmroad · #35 · 2009年11月16日

因该的啊,身为版主就要尽其所能为人民服务啊。。。。可惜偶才疏学浅

欢迎来申请感兴趣版面的版主啊

96
sophia108 · #36 · 2009年11月16日

已经提交了bug,猛然发现自己英文好菜~~

96
scmroad · #37 · 2009年11月16日

孰能生巧

会点英文,就是为了很容易找个轻松的工作,呵呵

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册