需提前搭建好新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