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

如何访问另一个job生成的artifact的内容

两种方案都可以,你可以根据使用场景选择:

1. Groovy实现方案

如果你是在Jenkins Pipeline中处理该artifact,Groovy是更原生的选择,不需要依赖节点上安装的curl命令,跨环境兼容性更好。
如果是访问同实例下的job-1构件,可以直接调用Jenkins内置API获取内容,示例代码如下:

// 需在受信任的Pipeline中运行,或申请对应脚本执行权限
import jenkins.model.Jenkins

// 获取job对象,多层级任务的话填完整路径比如'folder1/job-1'
def targetJob = Jenkins.instance.getItemByFullName('job-1')
// 可根据需求替换为指定构建号,比如targetJob.getBuildByNumber(25)
def targetBuild = targetJob.getLastSuccessfulBuild()
// 匹配你要访问的artifact文件名
def artifact = targetBuild.getArtifacts().find { it.fileName == '你的目标文件名' }

if (artifact) {
    // 直接读取文件内容,可直接做后续逻辑处理
    def artifactContent = artifact.file.text
    println artifactContent
}

如果是跨实例访问、或者不想调用内置API,Groovy也可以直接发起HTTP请求拉取内容:

def artifactUrl = "http://你的Jenkins服务地址/job/job-1/构建号/artifact/目标文件路径"
def request = new URL(artifactUrl).openConnection()
// 配置鉴权信息,token可在Jenkins个人设置中生成
request.setRequestProperty("Authorization", "Basic " + "用户名:访问token".bytes.encodeBase64().toString())
def artifactContent = request.inputStream.text
println artifactContent

2. curl方案的适用场景

如果你只是临时拉取构件、或者在非Jenkins环境执行简单的拉取逻辑,curl确实是最简便的方案,一行命令即可完成,不需要额外配置脚本权限:

curl -u 用户名:访问token http://你的Jenkins服务地址/job/job-1/构建号/artifact/目标文件路径

选择建议

  • 若你需要在Jenkins Pipeline内部对artifact内容做后续逻辑处理,优先选Groovy方案,和现有Pipeline集成度更高
  • 若只是单次拉取文件、或者在外部环境执行简单拉取任务,直接用curl即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 07:06:04