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

Gitlab CI:如何在Runner上复用工件,避免每次Job重复下载大文件?

GitLab CI 大工件持久化优化方案

针对你遇到的2GB低频更新工件重复下载的问题,GitLab CI有几种内置功能和最佳实践可以解决:

1. 使用 Runner 缓存(Cache)

GitLab CI的缓存机制可在同一Runner的不同Job间共享文件,适配这类低频更新的大文件场景。

  • 配置方式:在.gitlab-ci.yml中定义缓存路径与缓存键,将工件校验和作为缓存键的一部分,确保仅在校验和变化时更新缓存。
    示例配置:
    cache:
      key: "$CI_JOB_NAME-$ARTIFACT_CHECKSUM" # ARTIFACT_CHECKSUM为预计算的工件校验和变量
      paths:
        - path/to/your/2gb-artifact/
    
  • 注意事项:确保Runner使用本地缓存(默认配置);若用共享Runner,需确认缓存隔离策略,避免项目间缓存冲突。

2. 使用 Runner 本地持久化存储

若你自行部署Runner(如Docker或Kubernetes环境),可给Runner挂载持久化卷,将工件存储在卷内,Job直接复用已有文件。

  • 配置方式:
    • Docker Runner:在config.toml中为Runner配置volumes,将主机目录或外部卷挂载到容器内的工件路径。
      示例config.toml片段:
      [[runners]]
        name = "Persistent Runner"
        url = "https://your-gitlab-instance/"
        token = "your-runner-token"
        executor = "docker"
        [runners.docker]
          image = "your-base-image"
          volumes = ["/host/path/to/artifact:/container/path/to/artifact", "/cache"]
      
    • Kubernetes Runner:配置PersistentVolumeClaim(PVC)并挂载到Runner Pod中。
  • 配合校验和脚本:Job启动时先检查持久化目录内的工件校验和,不匹配时再触发下载,完全复刻工作站的逻辑。

3. 使用 GitLab 项目永久工件

将2GB工件上传为GitLab项目的永久工件,后续Job直接从项目工件库拉取,而非外部源下载。

  • 操作步骤:
    1. 手动或通过一次性Job将工件上传至GitLab项目工件库,标记为keep(永久保留)。
    2. 在流水线Job中使用artifacts:download规则或结合GitLab API拉取工件,同时执行校验和验证。
  • 优势:不依赖Runner本地存储,适配共享Runner场景,工件统一由GitLab管理。

4. 使用 Dependency Proxy(依赖代理)

若工件从外部仓库下载,可启用GitLab的Dependency Proxy,将工件缓存到GitLab实例内,后续Job从本地代理拉取,大幅提升下载速度。

  • 配置方式:在项目设置中启用Dependency Proxy,修改下载脚本的源地址为GitLab代理地址,代理会自动缓存已下载的工件,仅当源工件更新时重新拉取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 20:15:37