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

如何在Jenkins的GitHub组织文件夹中获取当前仓库名称?

我来帮你梳理这两个问题的解决方法,都是Jenkins GitHub组织文件夹场景下常用的实用方案:

获取触发本次构建的当前仓库名称

针对不同类型的Jenkins项目,获取触发构建的当前仓库名称有不同的实现方式:

Freestyle 项目

你可以通过两种简单的方式提取:

  • 拆分内置环境变量:Jenkins会自动生成JOB_NAME变量,格式为[组织文件夹名]/[仓库名](比如my-team/my-service)。在Shell步骤中用命令拆分提取:
    REPO_NAME=$(echo "$JOB_NAME" | cut -d'/' -f2)
    echo "当前触发构建的仓库: $REPO_NAME"
    
  • 从Git地址解析:环境变量GIT_URL存储了仓库的克隆地址(比如https://github.com/my-team/my-service.git),用Shell命令提取仓库名:
    REPO_NAME=$(basename -s .git "$GIT_URL")
    echo "当前仓库名称: $REPO_NAME"
    

Pipeline 项目

在Jenkinsfile里,你有更灵活的Groovy代码实现方式:

  • 拆分JOB_NAME变量:直接通过字符串拆分快速获取:
    def repoName = env.JOB_NAME.split('/')[1]
    echo "当前触发构建的仓库名称: ${repoName}"
    
  • 从SCM配置中提取:如果需要更可靠的来源,可以从scm对象解析仓库URL:
    def repoUrl = scm.getUserRemoteConfigs()[0].getUrl()
    def repoName = repoUrl.split('/')[-1].replace('.git', '')
    echo "当前仓库名称: ${repoName}"
    

获取组织文件夹下的所有仓库名称

要获取整个组织文件夹下的所有仓库(对应Jenkins中的子Job),需要借助Jenkins的Groovy脚本能力:

Pipeline 项目实现

在Jenkinsfile中添加以下代码(注意需要确保Jenkins有足够权限执行脚本):

import jenkins.model.Jenkins
import com.cloudbees.hudson.plugins.folder.AbstractFolder

// 替换成你的组织文件夹名称
def orgFolderName = "my-team"
def orgFolder = Jenkins.instance.getItemByFullName(orgFolderName)

if (orgFolder instanceof AbstractFolder) {
    // 收集所有子Job的名称,也就是组织下的仓库名
    def allRepoNames = orgFolder.items.collect { it.name }
    echo "组织文件夹${orgFolderName}下的所有仓库: ${allRepoNames}"
} else {
    error "未找到名为${orgFolderName}的组织文件夹"
}

Freestyle 项目实现

添加「Execute system Groovy script」步骤,输入类似代码,还可以将结果写入文件或设置为环境变量供后续步骤使用:

import jenkins.model.Jenkins
import com.cloudbees.hudson.plugins.folder.AbstractFolder

def orgFolder = Jenkins.instance.getItemByFullName("my-team")
def repoNames = []
if (orgFolder instanceof AbstractFolder) {
    repoNames = orgFolder.items.collect { it.name }
}
// 将结果写入文件,方便后续步骤读取
new File("/tmp/repo-list.txt").write(repoNames.join("\n"))

注意事项

  • 执行Groovy脚本需要在Jenkins全局安全设置中批准相关类和方法的调用,遇到权限问题时,可以在「Manage Jenkins」→「In-process Script Approval」中完成签名批准。
  • 不同版本的CloudBees Folder插件可能存在微小API差异,以上代码基于主流版本测试可用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:28:47