Извлечение билетов Jira из GIT сообщения коммита с использованием groovy - PullRequest
0 голосов
/ 24 января 2020

Я пишу конвейер Jenkins, в котором извлекаю билеты Jira из сообщения GIT commit. Я использую регулярное выражение JIRA ID. Как я могу обработать многострочную строку? Я также должен отображать сообщения о фиксации, которые не содержат никаких действительных идентификаторов билетов. Как я могу сделать это, используя if-else l oop in groovy? Ниже logi c работает для одной строки, но не работает для нескольких строк.

def commit = """new change
CO-10389
SRE-1234"""

def regex = (/[\s|]?([A-Z]+-[0-9]+)[\s:|]?/) 

if(commit =~ regex){
    def jira = commit.readLines().findAll(/[\s|]?([A-Z]+-[0-9]+)[\s:|]?/)
    println jira
} else {
    println commit
}

1 Ответ

0 голосов
/ 27 января 2020

Многострочное регулярное выражение не поможет вам, если вы хотите обрабатывать также несовпадающие строки, поэтому вы должны обрабатывать текст построчно:

import java.util.regex.Matcher

def commit = """new change
CO-10389
CO-
SRE-1234"""

commit.eachLine{ l ->
  switch( l ){
    case ~/[\s|]?([A-Z]+-[0-9]+)[\s:|]?/:
      println "JIRA: ${Matcher.lastMatcher[0][1]}"
      break
    default:
      println "no JIRA $l"
  }
}

печатает

no JIRA new change
JIRA: CO-10389
no JIRA CO-
JIRA: SRE-1234
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...