Как я могу использовать регулярное выражение с флагами в конвейере Jenkins, когда / changelog? - PullRequest
0 голосов
/ 10 мая 2018

У меня есть этап конвейера Jenkins, который я хочу пропустить, если в сообщении коммита нет волшебной строки вида Release: (major|minor|patch) (без учета регистра и некоторых пробелов) в первой строке. Я пытаюсь использовать директиву when и условие changelog, но мне не нравится мое регулярное выражение, потому что оно искажено или буквально интерпретирует флаги .../im или экранированный пробел \s. Я не совсем знаю, как эффективно отлаживать ...

stage('Publish') {
    when {
         changelog '/.*^release:\\s*(major|minor|patch)\\s*$/im'
    }
    # ...
}

Когда это было "голое" регулярное выражение типа changelog /.*^ ... у него была синтаксическая ошибка.

Есть ли способ заставить регулярное выражение работать или было бы другое решение, подобное

when {
    expression { 
        ???? ==~ /.*^release:\\s*(major|minor|patch)\\s*$/im 
    }

быть лучше? Не уверен, что можно бросить в ????.

1 Ответ

0 голосов
/ 11 мая 2018

В Groovy / Java флаги регулярных выражений должны начинаться с начала и заключаться в круглые скобки, подобные этому /(?im).*^release:\s*(major|minor|patch)\s*$/.
Также вы можете получить наборы изменений фиксации из currentBuild.changeSets.Для git он возвращает набор GitChangeSet .

Следующее должно работать

when {
    expression { 
        currentBuild.changeSets.any { it.comment =~ /(?im).*^release:\s*(major|minor|patch)\s*$/ }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...