首页 » 系统运维 » CI & CD » 正文

CentOS7 安装 Gitlab,配置,从SVN迁移项目至Gitlab

一、环境:

系统:阿里云CentOS 7.4 64位

 

安装gitlab-ce 还是 gitlab-ee
官方建议安装gitlab-ee , 尽管你安装的是ee,但是你仍然可使用ce的所有功能,而哪天你需要升级之类的,你只需要一个授权就行了,而不用再重新部署,所以安装ee。(官方说明:https://www.gitlab.com.cn/installation/ce-or-ee/?distro=centos-7

 

官方文档:

gitlab版本选择:https://about.gitlab.com/installation/ce-or-ee/?distro=centos-7

安装文档:https://about.gitlab.com/installation/#centos-7

修改仓库数据目录:https://docs.gitlab.com/omnibus/settings/configuration.html#storing-git-data-in-an-alternative-directory

配置邮件:https://docs.gitlab.com/omnibus/settings/smtp.html

 

 

二、安装:

curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash

 

把url替换为你想要访问的地址
EXTERNAL_URL="http://git.chenxie.net" yum install -y gitlab-ee

 

三、配置

1. 修改仓库数据位置:

gitlab仓库数据默认存在 /var/opt/gitlab/git-data/ 目录  ,此目录我没有太多剩余磁盘空间,所以我要给他改一下:

创建新的仓库存储目录:

mkdir -p /data/gitlab/git-data

 

修改文件  /etc/gitlab/gitlab.rb  找到 git_data_dirs 这一段,改为如下:

git_data_dirs({ "default" => { "path" => "/data/gitlab/git-data" } })

保存退出,然后执行以下命令:

gitlab-ctl stop
rsync -av /var/opt/gitlab/git-data/repositories /data/gitlab/git-data/
gitlab-ctl upgrade
gitlab-ctl start

修改成功。

 

2. 配置邮件服务

编辑文件 /etc/gitlab/gitlab.rb ,找到 GitLab email server settings 这一段。

改为你的邮件服务器地址:

gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "mail.chenxie.net"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "git@chenxie.net"
gitlab_rails['smtp_password'] = "123456"
gitlab_rails['smtp_domain'] = "mail.chenxie.net"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true

gitlab_rails['gitlab_email_from'] = 'git@qooco.com'
gitlab_rails['gitlab_email_reply_to'] = 'noreply@chenxie.net'

保存退出后重新加载配置:

gitlab-ctl reconfigure

 

测试是否配置成功:

运行  gitlab-rails console  ,进入交互模式后输入如下红色部分:

irb(main):001:0> Notify.test_email('x.chen@chenxie.net', 'Message Subject', 'Message Body').deliver_now

没有错误提示就表示正确,你的邮箱会收到一封测试邮件。

 

3. 备份配置

gitlab_rails['manage_backup_path'] = true
gitlab_rails['backup_path'] = "/data/gitlab/git-backup"
gitlab_rails['backup_archive_permissions'] = 0644
gitlab_rails['backup_keep_time'] = 604800

保存退出后重新加载配置:

gitlab-ctl reconfigure

 

手动执行备份:

gitlab-rake gitlab:backup:create

如下:

[root@git ~]# gitlab-rake gitlab:backup:create
Dumping database ... 
Dumping PostgreSQL database gitlabhq_production ... [DONE]
done
Dumping repositories ...
 * Chengdu-RD/qooco-show-ui ... [DONE]
 * Chengdu-RD/qooco-show-ui.wiki ...  [SKIPPED]
done
Dumping uploads ... 
done
Dumping builds ... 
done
Dumping artifacts ... 
done
Dumping pages ... 
done
Dumping lfs objects ... 
done
Dumping container registry images ... 
[DISABLED]
Creating backup archive: 1532485865_2018_07_25_11.0.3-ee_gitlab_backup.tar ... done
Uploading backup archive to remote storage  ... skipped
Deleting tmp directories ... done
done
done
done
done
done
done
done
Deleting old backups ... done. (0 removed)

 

查看备份文件:

[root@git ~]# ll /data/gitlab/git-backup/
total 600
-rw-r--r-- 1 git git 307200 Jul 25 10:31 1532485865_2018_07_25_11.0.3-ee_gitlab_backup.tar
-rw-r--r-- 1 git git 307200 Jul 25 10:37 1532486234_2018_07_25_11.0.3-ee_gitlab_backup.tar

 

配置crontab实现自动定时备份(每天凌晨3点自动执行备份):

[root@git ~]# crontab -e
0 3 * * * gitlab-rake gitlab:backup:create

 

三、从SVN迁移项目至Gitlab

随便找一个机器都可以。

1. 安装需要用到的工具:

yum install -y git-svn

 

2.创建一个文件 userinfo.txt , 写入内容:

内容格式如下:

SVN用户名=Git用户名<邮箱地址>

如:

vim userinfo.txt

alexchen=alex.chen<chenxie@aliyun.com>
testuser=test.user<test@chenxie.net>

保存退出。

 

3. 将你要迁移的SVN项目clone到本地:

git svn clone http://192.168.1.100:81/svn/project/TestProject/SourceCode/Frontend --authors-file=userinfo.txt

 

4. 进入clone下来的目录操作:

git init
git remote add origin http://git.chenxie.net/alex.chen/Frontend-ui.git
git add .
git commit -m "Initial commit"
git push -u origin master

 

注意:

上面是将整个svn仓库都推到了master上,如果你的项目下面包括trunk,tags,branch等这些目录,上面的操作都会将这些目录推到master分支上,但这不太符合git的目录结构。

我们可以只将trunk推到master分支。那么就进入在clone下来的项目的trunk目录下执行上面的操作就可以将trunk推到master分支了。

 

如果trunk目录下有不想提交到git的目录或文件,怎么办?

可以在git svn clone 的时候使用 –ignore-paths=path 参数进行排除。

–no-metadata clone的时候不要svn的一些附加信息

git svn clone http://192.168.1.100:81/svn/Website/www.chenxie.net/SourceCode/trunk --ignore-paths=dist --no-metadata --authors-file=userinfo.txt

然后重复第4步。

 

一些问题处理:

1.当 git add . 时遇到下面的提示:

[root@git Web]# git add .
warning: CRLF will be replaced by LF in dist/scripts/sw/cs/EventHelpers.js.
The file will have its original line endings in your working directory.

执行add前运行:

git config --get core.autocrlf

 

 

其他以后再补充。

 

 

赞 (0)

发表评论

*