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

如何在Jenkins任务中创建可被另一个Jenkins任务调用的文件?

如何在Jenkins任务中创建可被另一个Jenkins任务调用的文件?

没问题,针对你遇到的这个场景——两个Jenkins任务,第一个生成快照文件、第二个要拿过来用,原来的文件共享要下线了,我给你几个实用的Jenkins原生方案,都是日常工作里常用的:

方案一:用Jenkins官方的「归档工件」功能(最推荐)

这是Jenkins专门用来保存任务产出文件的功能,稳定还支持跨节点获取,步骤很简单:

  • 第一步:配置第一个任务
    等你的Python脚本生成好快照文件后,在任务的「构建后操作」里添加「归档工件」选项。在「要归档的文件」输入框里填你的快照文件的路径,比如如果文件在任务工作区的snapshot文件夹下,就写snapshot/*.dat(根据你的实际文件名和路径调整)。这样第一个任务跑完后,Jenkins会自动把这个文件存在任务的专属工件仓库里。
  • 第二步:配置第二个任务
    要获取这个文件,需要用到「复制工件」插件(这是Jenkins官方插件,一般默认已经安装了):
    • 如果你用的是Freestyle项目:添加一个「构建步骤」,选择「复制工件」,然后选择第一个任务的名称,指定要复制的工件路径(和第一个任务里归档的路径一致),再设置目标路径(比如第二个任务工作区下的./input-snapshot/),保存后第二个任务就能拿到文件了。
    • 如果你用的是Pipeline项目(写Jenkinsfile),可以用copyArtifacts步骤,代码示例如下:
      stage('获取快照文件') {
          steps {
              copyArtifacts(
                  projectName: '你的第一个任务名称',
                  filter: 'snapshot/your-snapshot-file.txt',
                  target: './input-snapshot/'
              )
          }
      }
      
    配置好后,第二个任务运行时就会自动从第一个任务的工件仓库里拉取快照文件。

方案二:同节点下直接读取工作空间(不推荐,仅应急用)

如果你的两个任务固定在同一个Jenkins节点上运行,也可以让第二个任务直接读取第一个任务的工作空间路径,但这个方法局限性很大——一旦任务跑到其他节点就失效,而且权限配置不好容易出问题。
比如在第二个任务的Python脚本里,直接写读取路径:

with open('/var/lib/jenkins/workspace/第一个任务名称/snapshot/your-snapshot-file.txt', 'r') as f:
    snapshot_data = f.read()

注意要确保第二个任务的运行用户有访问第一个任务工作空间的权限,不然会报权限错误。

额外小提示

你可以给第二个任务配置「构建触发器」,设置成「在其他项目构建完成后触发」,选择第一个任务,再勾选「只有当构建稳定时才触发」,这样第一个任务成功生成快照后,会自动触发第二个任务运行,不用手动操作,还能保证文件一定存在。

这些方案都能解决你的问题,优先推荐用「归档工件+复制工件」的组合,这是Jenkins官方支持的标准做法,跨节点可用还稳定。

备注:内容来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 10:33:02