如何在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
相关产品推荐
相关产品推荐

