git - 使用 groovy 从 GIT 提交消息中提取 Jira 票证
问题描述
我正在编写 Jenkins 管道,其中我从 GIT 提交消息中提取 Jira 票证。我正在使用 JIRA ID 正则表达式。如何处理多行字符串?我还必须显示不包含任何有效票证 ID 的提交消息。如何使用 groovy 中的 if-else 循环来做到这一点?以下逻辑适用于单行,但不适用于多行。
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
}
解决方案
如果您还想处理不匹配的行,多行正则表达式将无济于事,因此您应该逐行处理文本:
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:|]?[\s|]?.*/:
//println "JIRA: ${Matcher.lastMatcher[0][1]}"
// or
println "JIRA: ${( l =~ /[\s|]?([A-Z]+-[0-9]+)[\s:|]?.*/ )[0][0]}"
break
default:
println "no JIRA $l"
}
}
印刷
no JIRA new change
JIRA: CO-10389
no JIRA CO-
JIRA: SRE-1234
推荐阅读
- python - 对 OSMnx 的大 graph_from_place() 请求导致超时错误
- javascript - 为什么传播属性不适用于 React useState 钩子
- excel - 在 Python Pandas 中从 Excel 导入并将元数据标题重新排列为列数据
- django - Django 详细视图查询 - 按外键对象 textchoices 字段过滤
- python - 通过 Pandas 将 CSV 插入 SQLITE:如何避免内存错误?
- excel - 过滤、打印为 PDF 并保存
- reactjs - 根组件中的道具为空
- python - ValueError:检查目标时出错:预期 up_sampling2d_2 有 4 个维度,但得到了形状为 (128, 1) 的数组
- c - C 保存游戏状态,减少传递的变量
- java - Spark 和 Cassandra:要求失败:在类 com.datastax.spark.connector.japi.CassandraRow 中找不到列:[mycolumn...]