0
点赞
收藏
分享

微信扫一扫

旧gitlab迁移至新gitlab脚本(适用于新旧gitlab版本差异大无法在线迁移的)

Yaphets_巍 2022-01-13 阅读 73

需提前搭建好新gitlab并在用户设置中获取token用于调用api接口

一:批量创建用户

vim userinfo.txt

password1    test@test1.com    username1
password2    test@test2.com    username2
password3    test@test3.com    username3

vim adduser.sh

#!/bin/bash
#批量创建gitlab用户
userinfo="userinfo.txt"
while read line 
do
    password=`echo $line | awk '{print $1}'`
    mail=`echo $line | awk '{print $2}'`
    username=`echo $line | awk '{print $3}'`
    name=`echo $line | awk '{print $4}'`
    curl -d "password=$password&email=$mail&username=$username&name=$name&private_token=gitlab_token" "http://gitlabURL/api/v4/users"

done <$userinfo

二:批量创建用户组

vim groupinfo.txt

groupname1
groupname2
groupname3
groupname4

vim groupadd.sh

#!/bin/bash
for i in `cat groupinfo.txt`
do
        echo $i
        curl --request POST --header "gitlab_token"  --data "name=${i}&path=${i}" http://gitlabURL/api/v4/groups
done

三:批量创建项目

vim projectinfo.txt

projectname1
projectname2
projectname3
projectname4

vim addproject.sh

#!/bin/bash
#批量创建gitlab用户
projectinfo="projectinfo.txt"
while read line 
do
    name=`echo $line | awk '{print $2}'`
    groupID=`echo $line | awk '{print $1}'`
    curl -k --request POST --header "gitlab_token" --data "name=${name}&namespace_id=${groupID}" "http://gitlabURL/api/v4/projects"

done <$projectinfo

四:批量导入代码

vim project.txt

groudname1  projectname1
groudname2  projectname2
groudname3  projectname3
groudname4  projectname4

vim gitremove.sh

#!/bin/bash
projectinfo="project.txt"
while read line
do
    name=`echo $line | awk '{print $2}'`
    group=`echo $line | awk '{print $1}'`
    gitlabAddr='gitlab.com'
    gitlabAddr2='newgitlab.com'
    oldPath='/data/old'
    newPath='/data/new'
    echo "拉取老gitlab代码"
    cd $oldPath
    git clone git@$gitlabAddr:$group/$name.git
    echo "老仓库代码拉取完成"
    cd $oldPath/$name
    #修改gitlab仓库地址
    gsed  -i 's/gitlab/newgitlab/g' $oldPath/$name/.git/config
    git branch -r | grep -v '\->' | while read remote; do git branch --track "${remote#origin/}" "$remote";done  &&git push --all && git push --tags
    echo "新仓库代码上传完成"


done <$projectinfo

举报

相关推荐

0 条评论