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

如何在JenkinsFile中获取流水线作业所在的文件夹名称?

获取Jenkins流水线所在文件夹名称并传递给下游作业

我来帮你解决这个问题!要在Jenkinsfile里获取流水线所在的文件夹名称,其实不用额外依赖Ownership插件(毕竟它的定位是管理归属信息,和文件夹路径无关),直接借助Jenkins内置的API就能实现,下面给你几种可行的方案:

方案1:基础版——直接获取父文件夹名称

利用currentBuild对象的project属性,它指向当前的流水线作业实例,而作业的parent属性就是它所在的文件夹对象,直接取name就能得到文件夹名称:

// 脚本式流水线直接写
def folderName = currentBuild.project.parent.name
println "当前流水线所在文件夹: ${folderName}"

如果是声明式流水线,需要把这段代码放在script块中:

pipeline {
    agent any
    stages {
        stage('获取文件夹名称') {
            steps {
                script {
                    def folderName = currentBuild.project.parent.name
                    echo "当前流水线所在文件夹: ${folderName}"
                    
                    // 直接传递给下游自由风格作业
                    build job: '下游自由风格作业', parameters: [
                        string(name: 'FOLDER_NAME', value: folderName)
                    ]
                }
            }
        }
    }
}

方案2:鲁棒版——处理嵌套文件夹/根目录场景

如果你的流水线可能在多层嵌套文件夹里,或者直接在Jenkins根目录下运行,可以加个递归判断,确保拿到最上层的文件夹名称(或者返回“根目录”):

def getFolderName() {
    def project = currentBuild.project
    def parent = project.parent
    
    // 循环向上查找,直到找到Folder类型的父节点或者Jenkins根节点
    while (parent.class.simpleName != 'Folder' && parent.class.simpleName != 'Jenkins') {
        parent = parent.parent
    }
    
    return parent.class.simpleName == 'Folder' ? parent.name : '根目录'
}

// 使用方法
def folderName = getFolderName()
echo "所在文件夹: ${folderName}"

// 传递给下游作业
build job: '下游自由风格作业', parameters: [
    string(name: 'FOLDER_NAME', value: folderName)
]

下游作业配置说明

要接收这个变量,你的下游自由风格作业需要提前配置字符串参数,参数名称要和Jenkinsfile里的FOLDER_NAME一致,这样就能在下游作业中通过${FOLDER_NAME}引用该变量了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:19:55