一、部署

1. 简介

gitLab 是一个用于仓库管理系统的开源项目。使用Git作为代码管理工具,并在此基础上搭建起来的web服务。可通过Web界面进行访问公开的或者私人项目。
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。
团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。

2. 安装

由于gitlab自带服务较多,因此建议使用全新服务器进行安装,生产环境内存4G起

  1. 站点
    官网: https://about.gitlab.com/
    国内镜像站:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum
  2. 安装依赖和软件
    安装依赖
1
yum install curl policycoreutils openssh-server openssh-clients policycoreutils-python

上传gitlab压缩包并用rpm安装

1
2
3
ls /server/tools/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm 
/server/tools/gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm
rpm -ivh gitlab-ce-10.7.0-ce.0.el7.x86_64.rpm
  1. 修改配置文件
    修改配置文件中的url部分,使用本机IP地址.命令和结果如下
1
2
3
sed -i '/^external_url/ s#http.*com#http://10.0.0.131#g' /etc/gitlab/gitlab.rb
cat /etc/gitlab/gitlab.rb|grep "^external_url"
external_url 'http://10.0.0.13'
  1. 初始化
1
2
gitlab-ctl reconfigure
gitlab-ctl start

每次修改了配置文件后,都要用gitlab-ctl reconfigure命令激活配置
初始化完成后,可以通过浏览器进行访问了,默认是80端口

3. gitlab常用命令

1
2
3
4
5
6
7
8
gitlab-ctl start	启动全部服务
gitlab-ctl restart 重启全部服务
gitlab-ctl stop 停止全部服务
gitlab-ctl reconfigure 使配置文件生效
gitlab-ctl show-config 验证配置文件
gitlab-ctl uninstall 删除gitlab(保留数据)
gitlab-ctl cleanse 删除所有数据,从新开始
gitlab-ctl tail <service name> 查看服务的日志

二、gitlab基础操作

1. 基础配置

1) 取消自动注册功能

在管理员配置中,点击最下面的settings,然后找到图上所指位置,取消掉自动注册功能

2) 添加ssh-key

当需要gitlab和其他服务器做免秘钥认证的时候,就需要在gitlab中添加ssh私钥

3) 创建group

4) 创建用户

5) 用户授权

2. 创建项目

1) 创建空项目

在首页点击创建项目,输入如下信息创建一个项目

2) 导入公有库项目

3) 与git联动

项目创建好以后,会提示你git命令行操作方式,如下
Command line instructions

1
2
3
Git global setup
git config --global user.name "Administrator"
git config --global user.email "admin@example.com"

Create a new repository

1
2
3
4
5
6
git clone git@10.0.0.13:root/test-job.git
cd test-job
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder

1
2
3
4
5
6
cd existing_folder
git init
git remote add origin git@10.0.0.13:root/test-job.git
git add .
git commit -m "Initial commit"
git push -u origin master

Existing Git repository

1
2
3
4
5
cd existing_repo
git remote rename origin old-origin
git remote add origin git@10.0.0.13:root/test-job.git
git push -u origin --all
git push -u origin --tags

三、目录和备份

1. 目录

1
2
3
4
5
6
/var/opt/gitlab/git-data/repositories:	库默认存储目录
/opt/gitlab: 应用代码和相应的依赖程序
/var/opt/gitlab: reconfigure命令编译后的应用数据和配置文件,不需要人为修改
/etc/gitlab: 配置文件目录
/var/log/gitlab: 此目录下存放了gitlab各个组件产生的日志
/var/opt/gitlab/backups/: 备份文件生成的目录

2. 配置变更

  1. 修改配置文件
  2. gitlab-ctl reconfigure 重置配置文件
  3. gitlab-ctl show-config 验证配置文件
  4. gitlab-ctl restart 重启gitlab服务

3. gitlab备份管理

1) 在配置文件中加入如下内容

1
2
3
4
cat >>/etc/gitlab/gitlab.rb <<'EOF'
gitlab_rails['backup_path'] = '/data/backup/gitlab'
gitlab_rails['backup_keep_time'] = 604800
EOF

2) 如果自定义备份目录需要赋予git权限

1
2
3
mkdir /data/backup/gitlab
chown -R git.git /data/backup/gitlab
/usr/bin/gitlab-rake gitlab:backup:create #执行备份

3) 定时任务Crontab中加入

1
0 2 * * * /usr/bin/gitlab-rake gitlab:backup:create

4. GITLAB数据恢复

如果要恢复gitlab数据库,需要先停止数据写入服务,在进行恢复操作

1
2
3
4
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
gitlab-rake gitlab:backup:restore BACKUP=1512811475_2017_12_09_10.2.2
gitlab-ctl restart

注意:要恢复的文件,存放在前面定义的备份目录中,但恢复时不需要写全路径,也不需要写全名,只需要向上面一样写出备份日期的相关特征即可