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

如何通过Groovy Web Console获取Jenkins任务配置并定位指定Gradle任务

查找Jenkins中运行指定Gradle任务的项目

我刚好处理过类似的Jenkins批量查找任务的场景,给你一步步拆解解决方案,同时解决你提到的两个核心问题:

核心问题解答

1. 通过Groovy Web Console获取任务配置

Jenkins的Groovy Web Console(访问路径一般是http://你的Jenkins地址/script)是直接操作Jenkins内部API的利器。要获取任务配置,其实每个项目对象都自带了导出配置的方法,不用绕弯路。

2. 从hudson.model.FreeStyleProject获取XML配置 & Map形式数据处理

对于FreeStyleProject类型的项目,直接调用project.getConfigFile().asString()就能拿到完整的XML配置文本。如果你的配置是以Map形式存储的(比如部分插件会把自定义配置存在项目属性Map里),可以通过project.getProperties()获取这个Map,再遍历键值对查找目标内容。

完整可运行的Groovy脚本

把下面的代码复制到Groovy Web Console,替换TARGET_GRADLE_TASK为你要找的Gradle任务名就能直接用:

def targetTaskName = "TARGET_GRADLE_TASK" // 替换成你的目标Gradle任务名
def matchedProjects = []

// 遍历Jenkins实例下的所有项目
Jenkins.instance.projects.each { project ->
    // 处理自由风格项目(FreeStyleProject)
    if (project instanceof hudson.model.FreeStyleProject) {
        // 获取项目的XML配置字符串
        def configXml = project.getConfigFile().asString()
        // 检查XML中是否包含目标Gradle任务(这里用了两种匹配方式,你可以根据实际情况调整)
        if (configXml.contains("<taskName>${targetTaskName}</taskName>") || configXml.contains("gradle ${targetTaskName}")) {
            matchedProjects.add(project.name)
        }
    }
    // 可选:处理Pipeline类型项目(如果你的实例里有Pipeline任务)
    else if (project instanceof org.jenkinsci.plugins.workflow.job.WorkflowJob) {
        def pipelineDef = project.getDefinition()
        if (pipelineDef instanceof org.jenkinsci.plugins.workflow.cps.CpsFlowDefinition) {
            def jenkinsfileScript = pipelineDef.getScript()
            if (jenkinsfileScript.contains("gradle ${targetTaskName}") || jenkinsfileScript.contains(targetTaskName)) {
                matchedProjects.add(project.name)
            }
        }
    }
}

// 输出结果
println "找到包含Gradle任务「${targetTaskName}」的项目:"
matchedProjects.each { name ->
    println "- ${name}"
}

额外补充

如果你的Gradle任务配置是存在项目属性Map里的,也可以在遍历项目的循环里添加这段逻辑来查找:

def projectProps = project.getProperties()
projectProps.each { key, value ->
    if (value.toString().contains(targetTaskName)) {
        println "项目${project.name}的属性「${key}」中包含目标任务"
    }
}

注意:运行Groovy脚本需要拥有Jenkins的管理员权限,否则可能无法访问项目的配置内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 06:52:10