我正在使用這個管道,從提交訊息運行測驗應該是一個選項。
我是 groovy 和正則運算式的新手,但我設法從提交訊息中獲取匹配項,并且可以很好地運行我的測驗。唯一的問題是,提交訊息中不能寫任何其他內容,否則它會失敗。
我希望能夠在提交訊息的幾乎任何地方撰寫我想要運行的測驗。或者也許作為頂部的第一件事,然后是之后的其余訊息。
提交訊息可能看起來像..
jenkins:BASE_TEST, RADIO_TEST, CRYPTO_TEST
blablabla
我的腳本如下所示:
def testPattern = ~/(?:^|[\r\n] )jenkins:([, a-zA-Z_] )(?:$|[\r\n] )/
for (int i = 0; i < currentBuild.changeSets.size(); i )
{
//entries -> author, timestamp, msg etc.
def entries = currentBuild.changeSets[i].items
for (int j = 0; j < entries.length; j )
{
def testMatcher = testPattern.matcher(entries[j].msg)
if (testMatcher.matches())
{
def testList = testMatcher.group(1).tokenize(',')
for (int k = 0; k < testList.size(); k )
{
testList[k] = testList[k].replaceAll("\\s", "")
switch (testList[k])
{
case 'RUN_ALL_TESTS':
env.SPREADING_FACTOR_TEST = true
env.RADIO_TEST = true
env.BASE_TEST = true
env.DEVELOP_TEST = true
env.CRYPTO_TEST = true
break
case 'SPREADING_FACTOR_TEST':
env.SPREADING_FACTOR_TEST = true
break
case 'RADIO_TEST':
env.RADIO_TEST = true
break
case 'BASE_TEST':
env.BASE_TEST = true
break
case 'DEVELOP_TEST':
env.DEVELOP_TEST = true
break
case 'CRYPTO_TEST':
env.CRYPTO_TEST = true
break
default:
break
}
}
}
}
}
我試圖以多種方式在 testPattern 中設定多行,但我可能做錯了。我用了很多時間: https ://regex101.com/r/43se9W/1
正則運算式 101 示例
在 regex101 中,它顯然沒有匹配問題,但我的 testMatcher.matches() 回傳 false。因此,問題是它無法匹配。
我曾嘗試查看https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#compile(java.lang.String)但也許我實施錯了。
uj5u.com熱心網友回復:
所以顯然你需要使用 find() 方法而不是 match(),duh.. 它現在可以作業了。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/476102.html
