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

Jenkins声明式流水线中如何配置archiveArtifacts排除文件?报错求助

解决Jenkins声明式流水线archiveArtifacts参数错误的问题

这个错误的根源很明确:你给archiveArtifacts传参时,excludes后面的多个路径没有被正确处理成该参数的单一值,Groovy把它们当成了额外的未命名参数,触发了Jenkins的参数命名检查。

错误原因拆解

你的原代码里,excludes: ""/bin/publish/Tests/**"", ""/bin/publish/coverage/**""这部分写法有两个问题:

  1. 嵌套双引号完全没必要,反而容易引发语法混乱;
  2. 两个独立的字符串直接跟在excludes:后面,会被Groovy解析为archiveArtifacts的第三个、第四个未命名参数,而Jenkins要求所有参数必须显式指定名称。

修正后的两种可行写法

写法1:使用字符串数组(更清晰,推荐)

把需要排除的路径放到一个数组里,用方括号[]包裹:

stage('Publish') { 
    steps { 
        bat 'dotnet publish -c Release' 
    } 
    post { 
        always { 
            archiveArtifacts(
                artifacts: '/bin/publish/**',
                excludes: ['/bin/publish/Tests/**', '/bin/publish/coverage/**'],
                fingerprint: true
            )
        } 
    } 
}

写法2:使用逗号分隔的单一字符串

如果习惯简洁写法,也可以把多个排除路径用逗号直接拼接成一个字符串(注意不要加空格,避免路径匹配异常):

stage('Publish') { 
    steps { 
        bat 'dotnet publish -c Release' 
    } 
    post { 
        always { 
            archiveArtifacts(
                artifacts: '/bin/publish/**',
                excludes: '/bin/publish/Tests/**,/bin/publish/coverage/**',
                fingerprint: true
            )
        } 
    } 
}

额外注意点

  • 尽量使用单引号'包裹路径字符串,除非你需要Groovy的变量插值功能,单引号可以避免不必要的语法解析问题;
  • 确保artifacts和excludes的路径与你实际的发布目录结构一致,避免出现匹配不到文件的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:15:36