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

如何在Jenkins主作业中实现缓存机制,复用多Runner作业的编译工件?

实现Jenkins主作业内缓存编译环境供Runner复用的方案

核心思路

让主作业先完成所有公共/需要复用的代码拉取、环境编译工作,将产物存放在主作业的Workspace内,触发Runner作业时传递缓存路径让其复用,最后主作业在所有Runner完成后统一清理缓存,全程在Jenkins作业生命周期内完成,无需依赖外部Linux目录的手动管理。


具体实现步骤

1. 配置主作业(环境准备+触发Runner+清理)

以自由风格项目为例:

  • 步骤1:拉取代码与编译环境
    执行拉取、编译操作,将产物存入带本次构建唯一标识的缓存目录,避免不同会话的缓存冲突:
    # 创建专属缓存目录
    mkdir -p ${WORKSPACE}/build_cache/${BUILD_ID}/common_env
    # 拉取公共代码并编译
    git clone <公共代码仓库地址> ${WORKSPACE}/build_cache/${BUILD_ID}/common_env/src
    cd ${WORKSPACE}/build_cache/${BUILD_ID}/common_env/src && make build-env
    # 若有Runner专属环境,单独编译存放
    mkdir -p ${WORKSPACE}/build_cache/${BUILD_ID}/runner_test1
    git clone <测试1代码仓库地址> ${WORKSPACE}/build_cache/${BUILD_ID}/runner_test1/src
    cd ${WORKSPACE}/build_cache/${BUILD_ID}/runner_test1/src && make build-test-env
    
  • 步骤2:阻塞式触发Runner作业
    添加「构建步骤」→「构建其他项目」,选择要触发的Runner作业,勾选以下选项:
    • Block until the triggered projects finish their builds(等待所有Runner完成后再继续主作业)
    • Pass parameters to the triggered projects(传递参数)
      传递两个关键参数:
    • MAIN_BUILD_WORKSPACE:值为 ${WORKSPACE}(主作业Workspace路径)
    • MAIN_BUILD_ID:值为 ${BUILD_ID}(本次主作业的唯一标识)
  • 步骤3:清理缓存
    所有Runner完成后,添加「构建步骤」→「执行shell」清理缓存:
    rm -rf ${WORKSPACE}/build_cache/${BUILD_ID}/
    
    也可直接启用「构建后操作」→「Delete workspace when build is done」,一次性清理整个Workspace(若主作业无其他需保留产物)。

2. 配置Runner作业(复用缓存)

同样以自由风格项目为例:

  • 步骤1:接收主作业参数
    在「General」→「This project is parameterized」中添加两个字符串参数:
    • MAIN_BUILD_WORKSPACE(主作业Workspace路径)
    • MAIN_BUILD_ID(主作业构建ID)
  • 步骤2:复用缓存执行测试
    跳过重复的拉取、编译步骤,直接使用主作业缓存的产物:
    # 进入主作业缓存的当前Runner专属环境目录
    cd ${MAIN_BUILD_WORKSPACE}/build_cache/${MAIN_BUILD_ID}/runner_test1/src
    # 执行测试
    make run-tests
    

注意事项

  • 跨Agent适配:若主作业与Runner作业在不同Jenkins Agent上运行,需在主作业编译完成后用「Copy Artifact」插件将缓存目录打包为构建产物,Runner作业再通过该插件下载缓存到自身Workspace复用。
  • 磁盘空间控制:若编译环境体积较大,需关注Agent磁盘使用情况,避免缓存堆积导致磁盘不足。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 23:04:51