首页 > 其他分享 >自动拉取 Gitlab 的所有仓库

自动拉取 Gitlab 的所有仓库

时间:2023-06-04 12:33:53浏览次数:37  
标签:Gitlab group 仓库 GITLAB 拉取 TOKEN groups id page

自动拉取 Gitlab 的所有仓库

每次重装电脑或者一个新的gitlab项目需要拉取,就需要拉仓库

思路

  1. 获取到自己有权限的所有分组
  2. 获取到分组下的仓库列表
  3. 自动创建二级目录并 使用 ssh clone 仓库

使用 gitlab 提供的 rest 接口

  1. api/v4/groups // 有权限的分组
    curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" '${GITLAB_HOST}/api/v4/groups?owned=1&per_page=500&page=1' | jq -r '.[] | (.id|tostring) + " " + .path + " "+ .web_url'
  2. api/v4/groups/{proups_id}/projects // 指定分组下的项目列表
    curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" '${GITLAB_HOST}/api/v4/groups/${group_id}/projects?per_page=500&page=1' | jq '.[].ssh_url_to_repo' | xargs -I{} git clone {}
#!/bin/env bash

GITLAB_TOKEN=""
GITLAB_HOST=""

# 获取所有有权限的分组,并打印出 id, 路径 ,url 地址, 描述信息
curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" "${GITLAB_HOST}/api/v4/groups?per_page=500&page=1" | jq -r '.[] | (.id|tostring) + " " + .path + " "+ .web_url'  > groups

cat groups | while read group;
do
    group_id=`echo $group | cut -d " " -f 1`
    group_path=`echo $group | cut -d " " -f 2`
    echo $group_id, $group_path

    if [ ! -d $group_path ]; then
        mkdir $group_path
    fi

    echo "clone ${group_path} ....................."
    sleep 2
    cd $group_path

    # 循环获取分组下所有的仓库
    page=1
    while [ true ];
    do
        projects=`curl --header "PRIVATE-TOKEN: ${GITLAB_TOKEN}" "${GITLAB_HOST}/api/v4/groups/${group_id}/projects?per_page=500&page=${page}&owned=true" | jq '.[].ssh_url_to_repo'`
        if [ -z "${projects}" ]; then
            break
        fi
        for project_url in $projects; do
            echo git clone "$project_url"
            git clone "$project_url"
        done
        page=$((page + 1))
    done
    cd -
done

标签:Gitlab,group,仓库,GITLAB,拉取,TOKEN,groups,id,page
From: https://www.cnblogs.com/sooooooul/p/17455510.html

相关文章

  • 如何把jar发布到中央仓库
    1、在网站https://issues.sonatype.org/secure/Dashboard.jspa注册一个账号(请记住对应的账号和密码,之后需要用到)此外,Sonatype还提供了一个名为OSS的系统,具体的构件发布是在这个oss系统上,SonatypeOSS地址:https://oss.sonatype.org这里的用户名和密码就是上面在JIRA中注册的,在这......
  • Gitlab 本地部署全过程、Gitlab Pages、企业版 PATCH
    Gitlab官网目前提供了EnterpriseEdition和CommunityEdition两种版本,分别对应linux系统的软件包gitlab-ee和gitlab-ce。看名字就知道,gitlab-ee是收费的功能更加丰富的版本。此外,企业版根据用户付费情况的不同,又分为了Starter、Premiun、Ultimate三种PLAN,可以在htt......
  • git仓库支持submodule
    概述git仓库引用其他仓库,类似软连接//usedgitsubmoduleaddgit://github.com/[USERNAME]/[REPO_NAME].gitTARGET_FOLDER在主仓库创建为TARGET_FOLDER的文件夹这会克隆一个外部仓库:git://github.com/[USERNAME]/[REPO_NAME].git到TARGET_FOLDER,类似gitclone这同时......
  • gitlab--不同的 stage 不重新下载代码、GIT_CHECKOUT、制品 artifacts
    介绍在gitlabci中,不同的stage都会重新下载代码,例如下面的.gitlab-ci.ymldefault:image:ruby:2.7.5stages:#运行的阶段顺序-build-test-deploybuild:#job的名称stage:build#阶段的名称script:-ls-l-echo123>test1.txt#在......
  • gitlab--不同的 stage 不重新下载代码、GIT_CHECKOUT、制品 artifacts
    介绍在gitlabci中,不同的stage都会重新下载代码,例如下面的.gitlab-ci.ymldefault:image:ruby:2.7.5stages:#运行的阶段顺序-build-test-deploybuild:#job的名称stage:build#阶段的名称script:-ls-l-echo123>test1.txt#在......
  • 数据仓库之商品订单数仓开发
    ods层在ods_mall中需要创建以下针对商品订单数据的表表名说明导入方式ods_user用户信息表全量ods_user_extend用户扩展表全量ods_user_addr用户收货地址表全量ods_goods_info......
  • 数据仓库之订单拉链表实战
    什么是拉链表针对订单表、订单商品表,流水表,这些表中的数据是比较多的,如果使用全量的方式,会造成大量的数据冗余,浪费磁盘空间。所以这种表,一般使用增量的方式,每日采集新增的数据。在这注意一点:针对订单表,如果单纯的按照订单产生时间增量采集数据,是有问题的,因为用户可能今天下单,明......
  • git一些小经验(1)----新建git仓库
    创建远程仓库此处假设你已经安装了git,并且配置了远程git仓库的ssh密钥.我是用https://gitee.com/作为远程仓库的,登录之后,在主页右上角,点击加号按钮,就可以创建一个新仓库,如下图所示:创建仓库时,如果预先选择了一些模板,则仓库中就会有一些初始文件.创建本地仓库......
  • 数据仓库项目介绍与分析
    项目效果展示本身我们这个数据仓库项目其实是一个纯后台项目,不过为了让大家能够更加直观的感受项目的效果,我们可以基于数据仓库中的数据统计一些指标进行展现。我们这个项目要讲的重点不是这个大屏,这个大屏只是一个效果,为了让大家感受更加直观一些而已,我们主要讲的是这些指标对......
  • git指定用户名或token下载,从指定分支拉取代码并上传到指定分支
    指定用户名下载 密码中如果有某些符号如'>',我们需给他编码'%3E'gitclonehttps://username:[email protected]/xxx.git 指定token下载  附带代理(生成token时一定要保存,否则以后看不到的)gitclonehttps://[email protected]/xxx.git--config"http.proxy=http:......