2017-09-22 21 views
1

私はDynamic Choiceパラメータを使用してJenkinsジョブを持っています。このパラメータは、git repoで利用可能なブランチのリストを取得し、リストの選択肢を作成したいブランチだけを返すことを目標としています。私は選択肢のリストに:dev、qa、& "7."で始まるものを含めたいと思います。例えば、それは7.23で、7.33など は、これは私が今持っているもので返します:Jenkins/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 

DEVとQAが働いているが、私は正しく動作する「7 *」のためのパターンマッチングを得ることができません。

+0

あなたの正確な問題は何ですか、あなたは '7'または多くの結果を得られませんか? 'process.text'と' list'の出力、欠落しているもの、あるいはその中にあるものを提供してください。 –

+0

現在、最後のif文がスクリプトを壊し、ジェンキンスのドロップダウンが空白です。だから '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 

出力します3210

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 
関連する問題