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

如何通过Jenkins脚本控制台用Groovy获取声明式Pipeline中的label值

enter image description here

从Jenkins脚本控制台获取Pipeline声明的agent label值

以下是两种不同场景下可直接在Jenkins脚本控制台运行的Groovy脚本:

方式1:读取Pipeline任务配置中声明的静态agent label

如果需要直接读取Pipeline配置里写死的静态label值,使用下面的脚本,替换其中的任务路径参数即可:

// 替换为你的Pipeline任务的完整路径,如一级目录下的任务直接写任务名,多层目录写folder1/folder2/jobName
def jobPath = "你的Pipeline任务全名"
def job = Jenkins.instance.getItemByFullName(jobPath)
if (job instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {
    def pipelineScript = job.getDefinition().getScript()
    // 匹配agent块下的label声明规则
    def matcher = (pipelineScript =~ /agent\s*\{\s*label\s*'([^']+)'/)
    if (matcher.find()) {
        println "获取到的label值:${matcher[0][1]}"
    } else {
        println "未匹配到静态声明的label"
    }
} else {
    println "指定任务不是Pipeline类型"
}

针对你提供的Pipeline示例,运行后会输出:获取到的label值:**se-installer-01.cec.lab.emc.com**

方式2:读取Pipeline某次运行时实际使用的节点label

如果Pipeline的label是动态传入的,或者需要获取某次构建实际调度的节点label,使用下面的脚本,替换任务路径和构建号参数即可:

// 替换为你的Pipeline任务的完整路径
def jobPath = "你的Pipeline任务全名"
// 替换为你要查询的构建号
def buildNumber = 123
def build = Jenkins.instance.getItemByFullName(jobPath).getBuildByNumber(buildNumber)
if (build) {
    def node = build.getBuiltOn()
    if (node) {
        println "本次构建实际使用节点的label:${node.getLabelString()}"
        println "本次构建实际调度的节点名称:${node.getDisplayName()}"
    } else {
        println "本次构建未绑定到具体节点"
    }
} else {
    println "指定构建不存在"
}

注意事项

  • 运行脚本需要Jenkins管理员权限,脚本控制台默认仅对管理员开放
  • 若Pipeline使用了agent any或者动态参数传入label,方式1无法匹配到有效值,需使用方式2获取运行时实际值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:39:04