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

如何在Jenkins Pipeline脚本中获取触发构建的远程服务器IP?

获取Jenkins远程触发构建的主机IP

可以通过以下两种方式在Pipeline脚本中获取触发构建的远程主机IP:

方法1:通过构建Cause对象获取(推荐)

Jenkins远程触发的构建会关联RemoteCause对象,直接从该对象中提取IP是最可靠的方式:

pipeline {
    agent any
    stages {
        stage('Fetch Remote IP') {
            steps {
                script {
                    def remoteCause = currentBuild.getBuildCauses('hudson.model.RemoteCause')
                    if (remoteCause) {
                        def remoteIp = remoteCause[0].addr
                        echo "触发构建的远程主机IP:${remoteIp}"
                    } else {
                        echo "本次构建并非由远程主机触发"
                    }
                }
            }
        }
    }
}

说明:currentBuild.getBuildCauses()传入RemoteCause的全类名,返回的列表第一个元素就是远程触发的Cause实例,通过addr属性即可直接拿到IP地址。

方法2:解析控制台日志(备选方案)

如果第一种方法无法生效,可通过正则匹配控制台日志提取IP:

pipeline {
    agent any
    stages {
        stage('Extract IP from Log') {
            steps {
                script {
                    def logLines = currentBuild.rawBuild.getLog(10) // 获取前10行日志,可按需调整行数
                    def ipMatcher = logLines =~ /Started by remote host (\d+\.\d+\.\d+\.\d+)/
                    if (ipMatcher.find()) {
                        def remoteIp = ipMatcher.group(1)
                        echo "触发构建的远程主机IP:${remoteIp}"
                    } else {
                        echo "未找到远程触发的IP记录"
                    }
                }
            }
        }
    }
}

说明:利用正则匹配日志中"Started by remote host"后的IP段,适合特殊场景下的 fallback 处理。

内容的提问来源于stack exchange,提问作者seok0.2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 04:50:16