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

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

一:批量创建用户

vim userinfo.txt

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

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

groupid projectname1
groupid projectname2
groupid projectname3
groupid 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值