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

共享开发机上的Jenkins pipeline如何提前检测本地资源占用并选可用节点

Jenkins共享内存资源节点自动调度解决方案

方案一:全局节点健康检测配置

该方案无需修改现有流水线代码,全局生效:

  • 进入Jenkins管理后台 → 节点管理 → 选中需要配置的开发机节点,进入编辑页
  • 在「启动方法」的高级设置区域,找到「节点就绪前执行的脚本」输入框,填入检测逻辑:
# 替换为你实际使用的资源占用标记文件路径
if [ -f /data/shared_mem.lock ]; then
    # 资源被占用时返回非0值,Jenkins会将该节点标记为离线,不会分配任务
    exit 1
fi
  • 配置节点离线后的自动重试上线间隔,建议设置为30~60秒,本地用户释放资源后节点会自动恢复可用状态

方案二:流水线内置节点检测逻辑

如果需要保留节点运行其他不需要共享内存的任务,只针对测试类流水线做资源检测,可以在流水线内实现节点轮询筛选:

pipeline {
    agent none
    stages {
        stage('筛选可用测试节点') {
            steps {
                script {
                    // 配置所有可供测试使用的节点列表
                    def candidateNodes = ["dev-machine-1", "dev-machine-2", "dev-machine-3"]
                    def targetNode = null
                    
                    // 遍历所有候选节点检测资源状态
                    for (nodeItem in candidateNodes) {
                        def nodeFree = node(nodeItem) {
                            // 检测标记文件不存在则返回0,代表节点可用
                            sh returnStatus: true, script: "test ! -f /data/shared_mem.lock"
                        } == 0
                        if (nodeFree) {
                            targetNode = nodeItem
                            break
                        }
                    }
                    
                    if (!targetNode) {
                        error "当前无可用测试节点,请等待资源释放后重试"
                    }
                    // 保存可用节点到环境变量,供后续阶段使用
                    env.SELECTED_NODE = targetNode
                }
            }
        }
        // 后续所有测试阶段都绑定到筛选出的可用节点执行
        stage('执行测试') {
            agent {
                node {
                    label "${env.SELECTED_NODE}"
                }
            }
            steps {
                // 原有测试逻辑
                echo "在节点${env.SELECTED_NODE}上执行测试任务"
            }
        }
    }
}
  • 可根据业务需要调整重试逻辑,比如添加循环等待资源释放,设置合理的超时时间避免任务无限等待
  • 可自定义节点筛选顺序,添加负载均衡逻辑避免单节点任务过多

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 20:24:02