背景
- 服务器申请下来了
- 项目越来越多,目前的仓库管理功能有点弱,完全靠人来管理,包括建立仓库、管理ssh key等
- 使用Gitlab可以更方便的查看仓库相关信息、人员相关信息。比如每个人的代码提交量、日志
一句话总结:随着仓库数量的增长,势必要引入工具来进行管理。
Gitlab搭建
安装docker
- 安装依赖
yum install -y yum-utils
device-mapper-persistent-data
lvm2
- 添加国内源
yum-config-manager
--add-repo
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
- 使用脚本自动安装docker-ce
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh --mirror Aliyun
- 启动docker
systemctl enable docker
systemctl start docker
安装Gitlab
- 下载镜像
docker pull gitlab/gitlab-ce
- 启动Gitlab
docker run --detach
--publish 443:443 --publish 80:80 --publish 2222:22 # 本地端口的映射
--name gitlab # gitlab-ce 的镜像运行成为一个容器,这里是对容器的命名
--restart always # 设置重启方式,always 代表一直开启,服务器开机后也会自动开启的
--volume /srv/gitlab/config:/etc/gitlab # 将 gitlab 的配置文件目录映射到 /srv/gitlab/config 目录中
--volume /srv/gitlab/logs:/var/log/gitlab # 将 gitlab 的log文件目录映射到 /srv/gitlab/logs 目录中
--volume /srv/gitlab/data:/var/opt/gitlab # 将 gitlab 的数据文件目录映射到 /srv/gitlab/data 目录中
gitlab/gitlab-ce:lates # 需要运行的镜像
这样Gitlab就启动了。
这里其实有个坑,在centos7下,22端口被占用了,所以第三个端口映射不能使用 22
端口,使用其他就可以了。
第三个端口是 ssh 的映射端口,刚开始使用的 22
,导致不能通过ssh协议 clone 项目。
配置邮件服务器
想要发邮件,就必须配置邮件服务器。我配置的是QQ邮箱。
打开 /srv/gitlab/config/gitlab.rb
- 修改配置
### Email Settings
gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465 # 端口不可以选择587,测试过会发送邮件失败
gitlab_rails['smtp_user_name'] = "********@qq.com" # * 你的邮箱账号,也可以是ge**lin@qq.com等
gitlab_rails['smtp_password'] = "****" # * 授权码,不是密码
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = '********@qq.com' # * 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错
gitlab_rails['smtp_domain'] = "qq.com" # 修改并不影响 可修改为exmail.qq.com/james.com 经测试完全不影响,删除也不影响,并且发送的邮件都是一样的。
- 重新加载配置
docker exec gitlab gitlab-ctl reconfigure
- 重启Gitlab
docker container gitlab restart
配置Git仓库访问路径
这一步我们要把地址配置成服务器IP。
打开 /srv/gitlab/config/gitlab.rb
- 修改配置
external_url 'http://xxx.xxx.xxx.xx'
- 重新加载配置
docker exec gitlab gitlab-ctl reconfigure
- 重启Gitlab
docker container gitlab restart
迁移仓库
登录Gitlab
第一次登录会要求你输入密码,用户名为root(超级管理员)
新建空仓库
我们新建一个空仓库,用来作为迁移仓库。
拉取裸仓库到本地
git clone --bare git@xxx.xx.xx.xx:/home/git/test.git
以镜像方式push代码到Gitlab
cd test.git
git push --mirror ssh://git@xx.xx.xx.xx:2222/root/test.git
至此,我们就完成了git仓库迁移到Gitlab的工作了。
后续
Gitlab提供CI/CD功能,就顺便看了一下,需要搭建Gitlab-Runner,执行pipline。因为目前在用jenkins,留给以后再探索。
使用Gitlab的目的主要有两个原因:
- 项目越来越多,使用工具可以方便管理
- Gitlab提供了统计数据的功能,比如用户的提交地图
参考资料
- 使用Docker搭建Gitlab
- git仓库完整迁移
- 通过Docker搭建自用的Gitlab服务
- Docker Gitlab SSH 坑
- Git配置ssh key后,还是需要输入密码,git clone http 可以
- gitlab搭建与配置说明