1

Jenkins ワークフロー (Jenkins ver 1.609.1) の最初のステップを作成しています。ファイルを 1 行ずつ読み取り、各行で正規表現を実行する必要があります。正規表現の「グループ化」タイプに興味がありますが、「プロジェクト」変数と「ステータス」変数 (以下のコード) は Jenkins で null 値を取得します。何が間違っているのか、それを修正する方法はありますか?

def line = readFile (file)
def resultList = line.tokenize()
for(item in resultList ){
(item  =~ /(\w+)=(\w+)$/).each { whole, project, status  ->
      println (whole)
      println (project)
      println (status)
    }
}
4

2 に答える 2

3

eachクロージャでは機能しません: JENKINS-26481

高度な言語機能を使用する何かがスタンドアロンの Groovy では機能するがワークフローでは機能しない場合は、 とマークされたメソッドにカプセル化してみてください@NonCPS。これにより、「ネイティブ」メソッドとして効果的に実行されます。これは、Jenkins の再起動に耐えることができないため、迅速に実行され、I/O でブロックされないことが確実なコードに対してのみ行ってください。

于 2015-08-04T14:33:07.283 に答える
2

さて、他のいくつかの正規表現オプションをチェックした後、私はうまくいっているように見える次の解決策を思いつきました:

def matcher = item =~ /(?<proj>\w+)=(?<status>\w+)/
if( matcher.matches() ) { etc...} 
于 2015-07-27T12:40:53.560 に答える