2017-02-20 25 views
0

我想看看是否有一個插件,可以做我想要的東西或我錯過了關於詹金斯觸發器的東西。給我們一個我們想要做的例子,讓我解釋一下目前的情況。詹金斯 - 在一定的時間後觸發作業

  1. 合併由
  2. 詹金斯在合併回升,遠程構建機器
  3. 服務器停止
  4. 建造,檢查,等完成
  5. 服務器上啓動拉動變化

所以上述都很好,很好,但是我們想要做的是觸發服務器停止並在Jenkins提取合併之後構建。儘管如此,這是一個大型項目,有多條軌道,我們可以說在10-30分鐘的窗口內完成了4-10個合併。所以顯然我們不希望在隊列中有4-10個工作都運行相同的事情。

那麼實現上述的最佳方法是什麼,即基於合併的Jenkins觸發器,如果​​沒有其他合併,則等待x分鐘,然後觸發構建過程,如果新合併重置計數器返回到x分鐘並且再等一等?

是否有任何插件或觸發器內置到詹金斯,我們可以實現這一點? (我找不到任何明顯的東西)或者是這種情況下,我們需要參數化構建並運行一些腳本?

回答

1

不知道有這樣做的任何插件。但是,如果你正在使用的作業類型管道或願意將其轉換爲管道,那麼下面的詹金斯管道將這樣的伎倆:

// Sleep for a certain time, in this case 20 seconds 
sleep(20); 

// Check if there is a newer build, if there is abort this one. 
if (currentBuild.nextBuild != null) { 
    echo "Got newer build, aborting this one!" 
    currentBuild.result = Result.NOT_BUILT; 
    return; 
} 

// Do the rest of building here 
+0

對不起,在接受延遲,不得不玩的管道,但我設法得到我想用的東西。謝謝你的提示 :) – Grinch91