2012-05-27 20 views
9

問題如何讓Jenkins/Hudson工作監督一些其他工作並決定是否構建?

鑑於所有工作都串LEVEL_X在它的作業名,其中X是一個數字> 1.我想與X每一項工作= n至surveil與X = n-1每一項工作,並開始建設,如果每個他們完成了成功。我希望X = n的工作以1分鐘的間隔監視其他工作。

首先,我有興趣知道最好的辦法是做什麼,第二我想要的解決方案,如果一個可以通過一個小腳本實現,也許groovy腳本可以運行在system groovy script使用GROOVY插入。

回答

35

下面是一些提示和代碼片段:

  • 有一個在http://<jenkins-server>/script Groovy腳本控制檯,將幫助您調試腳本。
  • 這裏是鏈接到Jenkins Java API
  • 代碼片斷輸出所有作業名稱:

    def hi = hudson.model.Hudson.instance 
        hi.getItems(hudson.model.Project).each {project -> 
        println(project.displayName) 
    } 
    
  • 代碼片段提取從LEVEL_nn(如封閉實施):

    def level = { name -> 
        def ret = 0 
        name.eachMatch(~'LEVEL_([1-9]+[0-9*])', {ret = it[1].toInteger()}) 
        return ret 
    } 
    
  • 代碼段得到狀態的所有最新建立:

    def hi = hudson.model.Hudson.instance 
    hi.getItems(hudson.model.Project).each {project -> 
        println(project.lastBuild.result) 
    } 
    
  • 鏈接到starts a build的方法。

注意:如果您使用Matrix版本,事情會變得更加有趣。但只要你不這樣就夠了。

+0

謝謝,這是訪問工作信息的好方法。 – Moni

+2

+ jenkins服務器腳本url - 節點groovy控制檯毫無價值,因爲它不會導入所有的類。 – Epu

+0

在groovy控制檯中,我發現完整的腳本/命令必須全部在一行上,否則會出現各種語法錯誤。例如作業名稱片段對我來說就像這樣:'''def hi = hudson.model.Hudson.instance; hi.getItems(hudson.model.Project).each {project - > println(project.displayName)}''' – gaoithe

相關問題