2017-08-12 153 views
0

我們的團隊正在使用合併請求來確保代碼評論。 我們使用詹金斯作爲我們的CI服務器。當同一分支的工作正在等待時,清理jenkins隊列作業

有時候在審查給定的分支時,我們會將很多提交推送給給定的分支。在jenkins中,我們觸發每次提交的構建。

如果它檢測到同一分支的多個作業,是否有辦法自動清除jenkins作業隊列?只保留最近的工作?確保建立最新的提交。

+0

是否使用[標籤:詹金斯流水線]這具有里程碑式的一步。 – StephenKing

+0

我沒有使用該插件。里程碑步驟在這種情況下如何提供幫助? –

+0

它清除所有達到里程碑的先前版本。請參閱[文檔](https://wiki.jenkins.io/display/JENKINS/Pipeline+Milestone+Step+Plugin)。 – StephenKing

回答

1

您可以使用一些常規代碼來檢查隊列中是否有其他作業,如果是這樣,請清理隊列或中止當前構建。

這裏是清理隊列爲例

高清BRANCHNAME = build.environment.get( 「GIT_BRANCH_NAME」)

def buildNo = build.environment.get("BUILD_NUMBER") 

println "checking if need to clean the queue for" + branchName + " build  number : " + buildNo 

def q = Jenkins.instance.queue 
q.items.each { 
    println("${it.task.name}:") 
} 

q.items.findAll { it.task.name.startsWith(branchName) }.each { 
    q.cancel(it.task) 
} 
+0

我可以在哪裏添加這個groovy代碼? –

+0

btw,這個腳本不會取消當前的工作嗎? –

+0

當前作業將繼續運行,它只會清理隊列。如果你想中止當前的工作,你需要修改腳本。 你需要添加一個構建步驟:*執行系統Groovy腳本*,確保你安裝了這個 - https://wiki.jenkins.io/display/JENKINS/Groovy+plugin –

相關問題