Jenkins声明式流水线中如何配置archiveArtifacts排除文件?报错求助
解决Jenkins声明式流水线
archiveArtifacts参数错误的问题 这个错误的根源很明确:你给archiveArtifacts传参时,excludes后面的多个路径没有被正确处理成该参数的单一值,Groovy把它们当成了额外的未命名参数,触发了Jenkins的参数命名检查。
错误原因拆解
你的原代码里,excludes: ""/bin/publish/Tests/**"", ""/bin/publish/coverage/**""这部分写法有两个问题:
- 嵌套双引号完全没必要,反而容易引发语法混乱;
- 两个独立的字符串直接跟在
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
相关产品推荐
相关产品推荐

