自動下載gitLab上的所有項目或者群組項目腳本 bash shell 腳本


#!/usr/bin/env bash
function getListByKey() {
    json=$1
    key=$2
    echo $json | grep -Po  '"$key":(.+?),' | grep -Po  '\d+'
}

function  groupProjects() {
groupList=''
groupList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/groups)
#echo $groupList
idList=(`echo $groupList | grep -Po  '"id":(.+?),' | grep -Po  '\d+'`)
nameList=(`echo $groupList | grep -Po  '"name":(.+?),'  | awk -F '\"' '{print $4}'`)
#遍歷 group id list
echo "您有  ${#idList[@]}  個分組 "
for(( i=0;i<${#idList[@]};i++)) do
echo  "目錄 ${nameList[i]}"
    mkdir  ${nameList[i]}
    cd     ${nameList[i]}

projectsList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/groups/${idList[i]}/projects)

sshList=(`echo $projectsList | grep -Po  '(ssh)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'`)
for(( j=0;j<${#sshList[@]};j++)) do

echo "准備克隆第$[$i+1] 分組下的第$[$j+1] 個項目${sshList[j]}";
git clone ${sshList[j]}
done
cd ..
done;
}


function  allProjects() {
allList=''
allList=$(curl -H "PRIVATE-TOKEN: $pricateToken" https://XgitlabIpX/api/v3/projects)
#echo $groupList
sshList=(`echo $allList | grep -Po  '(ssh)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'`)
for(( j=0;j<${#sshList[@]};j++)) do

echo "准備克隆第$[$j+1] 個項目${sshList[j]}";
git clone ${sshList[j]};
done;
}



#JNTMcqKTyytmUxRaWwsx
echo -e "請輸入你的私密令牌:  \n如果沒有,請前往https://XgitlabIpX/  項目--個人資料設置--個人訪問令牌--創建個人令牌(該令牌再次刷新就無法查看,請記得保存)"
#Private token
read  pricateToken
echo $pricateToken

while true
do
   #Individual group List
echo "下載個人所有項目請輸入1,下載所屬群組下的項目請輸入2"
read  putKey
        if [ $putKey = "1" ]; then

            allProjects
            break
            elif [ $putKey = "2" ]; then

            groupProjects
            break
            else
            echo "請輸入正確的指令"
        fi

done

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM