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

Jenkins中如何不指定全称读取工作区中唯一的动态命名CSV文件

Jenkins Pipeline动态匹配前缀CSV文件实现方案

直接使用Jenkins Pipeline内置的findFiles步骤即可实现通配符匹配,该步骤原生支持沙箱运行,无需额外配置脚本权限,修改后的完整代码如下:

copyArtifacts(projectName: 'scanPinnedVersions')
def lastSuccessBuildNum = Jenkins.instance.getItem("scanPinnedVersions").lastSuccessfulBuild.displayName.replace("#","")
// 拼接产物存放的目标目录路径
def targetDir = "${WORKSPACE}/${lastSuccessBuildNum}"
// 按前缀规则匹配CSV文件
def matchedCsvList = findFiles(glob: "${targetDir}/scanPinnedVersionReport*.csv")
// 读取匹配到的唯一文件
def da = readFile matchedCsvList[0].path

可选优化项

  • 新增异常校验逻辑,避免匹配不到文件时出现数组越界报错:
if (matchedCsvList.length == 0) {
    error "目录${targetDir}下未找到符合scanPinnedVersionReport*.csv规则的文件,请检查上游任务产物是否正常生成"
}
  • 如果你需要使用Java File类实现(仅适用于任务运行在主节点场景),可以替换匹配逻辑为如下写法:
def targetDir = new File("${WORKSPACE}/${lastSuccessBuildNum}")
def targetCsv = targetDir.listFiles().find { file ->
    file.name.startsWith('scanPinnedVersionReport') && file.name.endsWith('.csv')
}
def da = targetCsv.text

内容的提问来源于stack exchange,提问作者Tom S

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:36:02