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

Jenkins声明式流水线Copy Artifact插件lastCompletedLast选择器用法问询

关于Jenkins copyArtifacts插件lastCompletedLast选择器的正确用法

嘿,这个问题问得很细节!先直接给你结论:你写的selector: lastCompletedLast()是语法错误的,不过你想实现的「复制上一次完成构建产物」的需求,确实有更简洁的官方方案,下面给你拆解清楚:

1. 纠正错误:正确的选择器名称是lastCompleted()

你提到的lastCompletedLast是个笔误,插件官方提供的选择器其实是lastCompleted()——没有后面的那个Last!这个选择器的作用就是自动定位到目标项目最近一次完成的构建(不管构建结果是成功还是失败,只要不是被手动取消或仍在运行的状态)。

2. 替代你原有代码的正确写法

你原来的代码是通过手动获取上一次构建ID,再用specific()选择器复制产物:

def lastBuildId = currentBuild?.getPreviousBuild()?.getId()
copyArtifacts(projectName: "${JOB_NAME}", selector: specific("${lastBuildId}") )

用lastCompleted()可以直接简化成:

copyArtifacts(projectName: "${JOB_NAME}", selector: lastCompleted())

而且这个写法更健壮:如果是项目的第一次构建,currentBuild?.getPreviousBuild()会返回null,你的原有代码会因为找不到构建ID报错;而lastCompleted()会自动检测这种情况,抛出清晰的错误提示(比如「No completed builds found for project...」),避免空指针问题。

3. 补充几个常用的同类型选择器

除了lastCompleted(),插件还提供了几个实用的选择器,能覆盖不同场景:

  • lastSuccessful():定位最近一次成功的构建(只复制成功构建的产物)
  • lastStable():定位最近一次稳定的构建(通常指成功且没有警告的构建)
  • lastFailed():定位最近一次失败的构建(适合调试失败场景)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:53:08