2011-03-22 33 views
1

我们使用Hudson(1.398)和Perforce插件(1.1.14)来运行持续集成。构建被发起每次有是一个Perforce触发器调用签入:为什么Hudson与Perforce插件同步到最后一个更改列表?

wget "http://username:[email protected]:8080/job/hudson_projname_test/buildWithParameters?token=SECRETTOKEN&CHANGENUM=315311&SUBMITTER=username" 

哈德森cosole看起来是这样的:

Started by remote host 169.169.69.69 
Using master perforce client: projname_a0_username_hudson 
[hudson] $ /eda/perforce_2010.1/x86_64/bin/p4 workspace -o projname_a0_username_hudson 
Last sync'd change: 315267 
[hudson] $ /eda/perforce_2010.1/x86_64/bin/p4 counter change 
[hudson] $ /eda/perforce_2010.1/x86_64/bin/p4 -s changes //projname_a0_username_hudson/[email protected],@315311 
Sync'ing workspace to changelist 315267. 
[hudson] $ /eda/perforce_2010.1/x86_64/bin/p4 sync //projname_a0_username_hudson/[email protected] 
Sync complete, took 3956 ms 
[hudson] $ /bin/sh -xe /tmp/hudson30156.sh 
+ p4 sync @315311 
+ runsim 

的问题是,赫德森似乎并没有被同步到最后一个更改列表,而是到最后一个更改列表的下一个,所以我必须“手动”同步通过参数传入的更改列表。但是,当它通知提交者他们可能破坏了构建时,这个Hudson的b/c使用了错误的更改列表。

有没有其他人注意到Hudson/Perforce的这种行为,如果有的话,你是如何解决这个问题的?

回答

4

检查触发器是在实际提交更改之前执行的(因此如果需要,触发器可以阻止它)。因此,可能发生的情况是,构建会启动并获取最新的可用更改,其中不包括当前提交的更改。

你可能想要做的是写一个签入触发器脚本,它将分叉到后台,并在调用wget之前等待10-20秒左右。

+0

就是这样!谢谢! – stephenmm 2011-03-23 20:31:51

+4

您可以将触发器更改为更改提交触发器,或使用Hudson URL触发器http://wiki.jenkins-ci.org/display/JENKINS/URL+Change+Trigger – aflat 2011-03-24 02:08:04

相关问题