一、安装Gitlab
docker pull gitlab/gitlab-ce
docker run -d --restart=always --name gitlab \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/soft/gitlab/config:/etc/gitlab \
-v /usr/local/soft/gitlab/logs:/var/log/gitlab \
-v /usr/local/soft/gitlab/data:/var/opt/gitlab \
-p 443:443 \
-p 80:80 \
-p 1022:22 \
gitlab/gitlab-ce
二、配置gitlab.rb
2.1 配置url
vi /usr/local/soft/gitlab/config/gitlab.rb
# 修改下面的内容,可以是IP也可以是域名
external_url 'http://192.168.1.17'
# 重新加载配置
gitlab-ctl reconfigure
2.2 配置时区
# 默认配置是UTC时间,在Gitlab中查看commit时间会晚于北京时间8小时
# gitlab_rails['time_zone'] = 'UTC'
gitlab_rails['time_zone'] = 'Asia/Shanghai'
2.3 配置Email的发送
vi /usr/local/soft/gitlab/config/gitlab.rb
# 修改下面的内容
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = 'QQ号吗@qq.com'
gitlab_rails['gitlab_email_display_name'] = 'anron'
gitlab_rails['gitlab_email_reply_to'] = 'QQ号吗@qq.com'
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "QQ号吗@qq.com"
gitlab_rails['smtp_password'] = "QQ邮箱的授权码"
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
# 重新加载配置
gitlab-ctl reconfigure
# 测试邮件的发送,进入控制台
gitlab-rails console
# 在控制台输入命令发送一封测试邮件
Notify.test_email('收件人邮箱','邮件标题','邮件正文').deliver_now
2.4 登录Gitlab的WEB配置界面
设置root的密码后,创建group和user后就可以使用了,project可以属于user,也可以属于group,最好是属于group
三、远程仓库地址的格式
远程仓库地址的格式有:
- 协议 包括有http和ssh
- 主机 域名或IP
- 组 group或user(zyt)
- 项目 project(zyt-fireware)
四、添加Project到Gitlab
4.1 先配置好Groups和Users
进入Gitlab的管理页面,在Admin Area中查看Groups信息,可以看到组内有几个project和user
前面的图标是projects数量,后面的图标是users数量,zyt组有2个project和3个user,dog组有1个project和2个user
4.2 在Gitlab的管理页面中添加Project
进入Gitlab的管理页面New Project,输入Project name,选择Groups,点击Create project按钮即可
4.3 在客户端推送一个Project到Gitlab
cd existing_folder
# Initialized empty Git repository
$ git init
# 本地目录关联远程仓库地址
$ git remote add origin http://192.168.1.17/zyt/jwt.git
$ git add .
$ git commit -m '初始化项目'
$ git push -u origin master
4.4 在客户端推送一个已绑定其他Gitlab的Project到新的Gitlab
cd existing_folder
# 查看远程仓库地址
$ git remote -v
origin http://192.168.1.10/jinlin/jv_code_sdk_park.git (fetch)
origin http://192.168.1.10/jinlin/jv_code_sdk_park.git (push)
# 取消与远程仓库地址的关联
$ git remote remove origin
# 再次查看远程仓库地址,结果为空
$ git remote -v
# 本地目录关联远程仓库地址
$ git remote add origin http://192.168.1.17/zyt/zyt-fireware.git
# push数据到服务器
$ git push -u origin master
四、备份与还原
4.1 备份
[root@localhost ~]# docker exec -it gitlab bash
root@481012d86197:/# gitlab-rake gitlab:backup:create
#备份完成后在/var/opt/gitlab/backups目录下生成tar文件
root@481012d86197:/# ll /var/opt/gitlab/backups
-rw-------. 1 git git 53575680 Jul 18 07:19 1595056757_2020_07_18_13.1.4_gitlab_backup.tar
4.2 还原
# 使用scp命令从其它服务器copy文件或者本机
# scp是linux命令: scp 用户名@IP地址:远程文件的绝对路径 本机路径
docker外:
scp root@192.168.1.17:/var/opt/gitlab/backups/1595056757_2020_07_18_13.1.4_gitlab_backup.tar /var/opt/gitlab/backups/
docker内:
chmod -R 777 /var/opt/gitlab/backups
gitlab-rake gitlab:backup:restore BACKUP=1595056757_2020_07_18_13.1.4
4.3 定时自动备份
# 先确保crond服务已经安装
systemctl status crond
# 编辑cron
crontab -e
# 添加一行,每30分钟备份一次,正式环境可以把时间改成每天执行一次[0 0 * * *]
# docker exec不需要-it参数,否则提示the input device is not a TTY
*/30 * * * * docker exec gitlab gitlab-rake gitlab:backup:create
# 退出后查看
crontab -l
4.4 设置备份过期时间
vi /usr/local/soft/gitlab/config/gitlab.rb
# 修改备份保留天数,以秒为单位,1天=86400秒,7天=604800秒
gitlab_rails['backup_keep_time'] = 604800
# 重新加载配置
gitlab-ctl reconfigure