You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jenkins中从sh命令输出提取指定行的补丁文件路径?

Jenkins提取补丁文件名方案

方法一:逐行遍历匹配

先将脚本输出按行拆分,遍历找到以patch filename: 开头的行,再移除前缀提取路径:

def generated_patch_script_output = sh(returnStdout: true, script: """generatepatch_script ${params.some_param}""")
def patchPath = null

// 按换行符拆分输出为行列表
generated_patch_script_output.split('\n').each { line ->
    if (line.startsWith('patch filename: ')) {
        // 移除前缀,提取路径部分
        patchPath = line.replace('patch filename: ', '').trim()
    }
}

// 后续使用提取到的路径
if (patchPath) {
    echo "提取到的补丁路径:${patchPath}"
} else {
    error "未找到包含补丁文件名的行"
}

方法二:正则表达式直接提取

通过正则表达式直接从输出字符串中匹配并提取目标路径,写法更简洁高效:

def generated_patch_script_output = sh(returnStdout: true, script: """generatepatch_script ${params.some_param}""")
def matcher = generated_patch_script_output =~ /patch filename: (.*)/

def patchPath = null
if (matcher.find()) {
    patchPath = matcher.group(1).trim()
}

// 后续使用提取到的路径
if (patchPath) {
    echo "提取到的补丁路径:${patchPath}"
} else {
    error "未找到包含补丁文件名的行"
}

两种方案都能实现需求,正则表达式方式更适合处理复杂输出场景,逐行遍历则更直观易懂。调用trim()是为了去除路径前后可能存在的空格。

内容的提问来源于stack exchange,提问作者Sven van den Boogaart

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 15:24:56