2011-03-22 31 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

相關問題