2017-09-22 51 views
1

我有一個動態選擇參數詹金斯的工作。目標是讓這個參數獲得git倉庫中可用分支的列表,然後只返回那些我想要構建列表選擇的分支。我想要包含的選項列表:dev,qa,&任何以「7.」開頭的內容。例如,它會返回7.23,7.33等 這是我現在有:詹金斯/ Groovy動態選擇參數返回特定模式

def list = [] 
def process = "/var/lib/jenkins/GIT/get_branches.sh".execute() 
int ii = 0 
process.text.eachLine { 
    if (it == "dev") { 
    list[ii] = it; ii++ 
    } 
    if (it == "qa") { 
    list[ii] = it; ii++ 
    } 
    if (it ==~ /7.*/) { 
    list[ii] = it; ii++ 
    } 
} 
list 

開發和QA工作正常,但我不能拿到模式爲「7 *」才能正常工作匹配。

+0

什麼是你確切的問題,你沒有得到任何'7'或許多結果嗎?請提供'process.text'和'list'的輸出,以及缺少或多少內容。 –

+0

目前,最後一條if語句會中斷腳本,jenkins中的下拉列表爲空。所以'list'是空的&process.text是一長串git分支。我找到了一個解決方案,我將添加爲答案,但優化是值得歡迎的。 – brewcrazy

回答

0

這裏是一個緊湊的解決方案

def list = [] 
"""foo 
bar 
700 
7.31 
7.32 
7.33 
dev 
qa""".eachLine { 
    switch (it) { 
    case "dev": 
    case "qa": 
    case ~/7\.\d+/: 
     list << it 
    } 
} 
println list 

輸出:[7.31, 7.32, 7.33, dev, qa]

0

我得到這個與下面的工作,但我開就怎麼做的建議這更好:

def list = [] 
def process = "/var/lib/jenkins/GIT/get_branches.sh".execute() 
int ii = 0 
process.text.eachLine { 
    if (it == "dev") { 
    list[ii] = it; ii++ 
    } 
    if (it == "qa") { 
    list[ii] = it; ii++ 
    } 

    def m = it =~ '^7.*' 
    if (m) { 
    list[ii] = it; ii++ 
    } 
} 
list 

這將導致以下詹金斯下拉菜單(這正是我一直在尋找) :

7.31 
7.32 
7.33 
dev 
qa