- gitlab安装配置
- 安装过程
yum install -y curl policycoreutils-python openssh-server cronie #安装依赖
vim /etc/yum.repos.d/gitlab-ce.repo #配置yum源
[gitlab-ce]
name=Gitlab CE Repository
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever/
gpgcheck=0
enabled=1
yum makecache #更新本地yum缓存
yum install gitlab-ce #安装GitLab最新社区版
gitlab-ctl reconfigure #gitlab初始化
默认安装路径
/var/opt/gitlab/
至此,gitlab安装完毕
- 故障恢复
1.系统资源不足
gitlab-ctl stop sidekiq
sidekiq与多线程启动相关,如果系统资源不足,可以关闭sidekiq来释放一部分内存
2.web页面出现502
其主要问题是系统资源不够用
unicorn[‘worker_timeout’] = 90 #默认60s,可以增大超时时间
gitlab_rails[‘webhook_timeout’] = 90 #默认60s,可以增大超时时间
也可以执行如下命令进行检查
gitlab-rake gitlab:check SANITIZE=true –trace
- GitLab常用命令
gitlab-ctl start # 启动所有 gitlab 组件;
gitlab-ctl stop # 停止所有 gitlab 组件;
gitlab-ctl restart # 重启所有 gitlab 组件;
gitlab-ctl status # 查看服务状态;
gitlab-ctl reconfigure # 启动服务;
vim /etc/gitlab/gitlab.rb # 修改默认的配置文件;
gitlab-rake gitlab:check SANITIZE=true –trace # 检查gitlab;
gitlab-ctl tail # 查看日志;
- Gitlab备份恢复操作
备份
[root@centos6 ~]# vim /etc/gitlab/gitlab.rb #备份目录路径设置
gitlab_rails[‘manage_backup_path’] = true
gitlab_rails[‘backup_path’] = “/home/ekcpsd/gitlab/backups”
[root@centos6 ~]# gitlab-rake gitlab:backup:create #备份操作
[root@centos6 ~]# cd /home/ekcpsd/gitlab/backups/
[root@centos6 ~]# ls
1529636423_2018_06_22_10.8.4_gitlab_backup.tar
数据恢复
scp 1529636423_2018_06_22_10.8.4_gitlab_backup.tar 192.168.1.200:~ #传输备份文件
服务端操作
mv 1529636423_2018_06_22_10.8.4_gitlab_backup.tar /var/opt/gitlab/backups/
cd /var/opt/gitlab/backups/
[root@centos6 ~]# chown git:git 1529636423_2018_06_22_10.8.4_gitlab_backup.tar
[root@centos6 ~]# gitlab-ctl stop unicorn #相关数据连接服务
[root@centos6 ~]# gitlab-ctl stop sidekiq #相关数据连接服务
[root@centos6 ~]# gitlab-ctl status #查看状态
[root@centos6 ~]# gitlab-rake gitlab:backup:restore BACKUP=1529636423_2018_06_22_10.8.4
Restoring uploads …
tar: .: Cannot mkdir: No such file or directory #出现错误可以忽略,直接登录查看
tar: Exiting with failure status due to previous errors
[root@centos6 ~]# gitlab-ctl start #再次启动Gitlab
[root@centos6 ~]# gitlab-rake gitlab:check SANITIZE=true # check检查一下恢复情况
- 现有项目初始化
- 添加客户端公钥
首先登陆web页面,首次登陆需要设置root用户的密码,然后登陆root用户添加gitlab客户端公钥
生成密钥对
[root@centos6 ~]# ssh-keygen -t dsa -P “” -f ~/.ssh/id_dsa #创建密钥对
[root@centos6 ~]# cat .ssh/id_dsa.pub #查看公钥
添加公钥
- 配置git
git config –global user.name “ekcr” #配置git使用用户
git config –global user.email “ekcr@moyi365.com” #配置git使用邮箱
git config –global color.ui true #语法高亮
git config –list # 查看全局配置
查看生成的配置文件
[root@gitlab ~]# cat .gitconfig
[user]
name = ekcr
email = ekcr@moyi365.com
[color]
ui = true
- push现有项目
如果你打算使用 Git 来对现有的项目进行管理,你只需要进入该项目目录并输入
[root@centos6 ~]# cd /home/www/ekwing/
[root@centos6 ekwing]# git init
[root@centos6 ekwing]# ls .git/
branches config description HEAD hooks info objects refs
[root@centos6 ekwing]# git add .
[root@centos6 ekwing]# git commit -m ‘initial project version’
[root@centos6 ekwing]# git remote add origin git@192.168.1.200:root/ekwing.git
[root@centos6 ekwing]# git push origin master
注意:可以不先创建工程
- 配置gitlab发邮件
[root@centos6 ~]# vim /etc/gitlab/gitlab.rb
gitlab_rails[‘time_zone’] = ‘Asia/Shanghai’
external_url ‘http://172.17.20.70’
gitlab_rails[‘gitlab_email_from’] = ‘service@moyi365.com’
gitlab_rails[‘gitlab_email_reply_to’] = ‘service@moyi365.com’
gitlab_rails[‘smtp_enable’] = true
gitlab_rails[‘smtp_address’] = “smtp.exmail.qq.com”
gitlab_rails[‘smtp_port’] = 465
gitlab_rails[‘smtp_user_name’] = “service@moyi365.com”
gitlab_rails[‘smtp_password’] = “M1oyiS2ervice6”
gitlab_rails[‘smtp_domain’] = “exmail.qq.com”
gitlab_rails[‘smtp_authentication’] = “login”
gitlab_rails[‘smtp_enable_starttls_auto’] = true
gitlab_rails[‘smtp_tls’] = true
user[‘git_user_email’] = “service@moyi365.com”
[root@centos6 ~]# gitlab-ctl reconfigure
命令行测试
[root@centos6 ~]# gitlab-rails console #进入命令行
————————————————————————————-
Gitlab: 10.8.4 (2268d0c)
Gitlab Shell: 7.1.2
postgresql: 9.6.8
————————————————————————————-
Loading production environment (Rails 4.2.10)
irb(main):001:0> Notify.test_email(‘liwenbin@moyi365.com’, ‘Message Subject’, ‘Message Body’).deliver_now #发邮件
Notify#test_email: processed outbound mail in 1359.1ms
Sent mail to liwenbin@moyi365.com (3223.5ms)
Date: Thu, 05 Jul 2018 16:54:04 +0800
From: GitLab <service@moyi365.com>
Reply-To: GitLab <service@moyi365.com>
To: liwenbin@moyi365.com
Message-ID: <5b3ddcac22de_1b4b3f8868fdb19853438@centos6.5.model.mail>
Subject: Message Subject
Mime-Version: 1.0
Content-Type: text/html;
charset=UTF-8
Content-Transfer-Encoding: 7bit
Auto-Submitted: auto-generated
X-Auto-Response-Suppress: All
<!DOCTYPE html PUBLIC “-//W3C//DTD HTML 4.0 Transitional//EN” “http://www.w3.org/TR/REC-html40/loose.dtd”>
<html><body><p>Message Body</p></body></html>
=> #<Mail::Message:69854712982680, Multipart: false, Headers: <Date: Thu, 05 Jul 2018 16:54:04 +0800>, <From: GitLab <service@moyi365.com>>, <Reply-To: GitLab <service@moyi365.com>>, <To: liwenbin@moyi365.com>, <Message-ID: <5b3ddcac22de_1b4b3f8868fdb19853438@centos6.5.model.mail>>, <Subject: Message Subject>, <Mime-Version: 1.0>, <Content-Type: text/html; charset=UTF-8>, <Content-Transfer-Encoding: 7bit>, <Auto-Submitted: auto-generated>, <X-Auto-Response-Suppress: All>>
irb(main):002:0> quit
[root@centos6 ~]#
- gitlab忘记root密码
[root@centos6 ~]# gitlab-rails console production
————————————————————————————-
Gitlab: 10.8.3 (564c342)
Gitlab Shell: 7.1.2
postgresql: 9.6.8
————————————————————————————-
Loading production environment (Rails 4.2.10)
irb(main):001:0> user = User.where(id: 1).first
=> #<User id:1 @root>
irb(main):002:0> user.password=12345678
=> 12345678
irb(main):003:0> user.password_confirmation=12345678
=> 12345678
irb(main):004:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 9f67d6af-a426-4352-8c4c-b8ef85c20c12) to Sidekiq(mailers) with arguments: “DeviseMailer”, “password_change”, “deliver_now”, gid://gitlab/User/1
=> true
irb(main):005:0> quit
注意:密码没有使用引号,奇怪的是使用单引号或双引号,密码就无效,估计是包含了这个字符,不包含,就没有问题。
- gitlab权限管理
- 访问权限–Visibility Level
这个是在建立项目时就需要选定的,主要用于决定哪些人可以访问此项目,包含3种
- Private-私有,只有属于该项目成员才有原先查看
- Internal-内部,用个Gitlab账号的人都可以clone
- Public-公开,任何人可以clone
- 行为权限
在满足行为权限之前,必须具备访问权限(如果没有访问权限,那就无所谓行为权限了),行为权限是指对该项目进行某些操作,比如提交、创建问题、创建新分支、删除分支、创建标签、删除标签等。
角色
Gitlab定义了以下几个角色:
- Guest – 访客
- Reporter – 报告者; 可以理解为测试员、产品经理等,一般负责提交issue等
- Developer – 开发者; 负责开发
- Master – 主人; 一般是组长,负责对Master分支进行维护
- Owner – 拥有者; 一般是项目经理
权限
不同角色,拥有不同权限,下面列出Gitlab各角色权限
- 工程权限
行为 | Guest | Reporter | Developer | Master | Owner |
创建issue | ✓ | ✓ | ✓ | ✓ | ✓ |
留言评论 | ✓ | ✓ | ✓ | ✓ | ✓ |
更新代码 | ✓ | ✓ | ✓ | ✓ | |
下载工程 | ✓ | ✓ | ✓ | ✓ | |
创建代码片段 | ✓ | ✓ | ✓ | ✓ | |
创建合并请求 | ✓ | ✓ | ✓ | ||
创建新分支 | ✓ | ✓ | ✓ | ||
提交代码到非保护分支 | ✓ | ✓ | ✓ | ||
强制提交到非保护分支 | ✓ | ✓ | ✓ | ||
移除非保护分支 | ✓ | ✓ | ✓ | ||
添加tag | ✓ | ✓ | ✓ | ||
创建wiki | ✓ | ✓ | ✓ | ||
管理issue处理者 | ✓ | ✓ | ✓ | ||
管理labels | ✓ | ✓ | ✓ | ||
创建里程碑 | ✓ | ✓ | |||
添加项目成员 | ✓ | ✓ | |||
提交保护分支 | ✓ | ✓ | |||
使能分支保护 | ✓ | ✓ | |||
修改/移除tag | ✓ | ✓ | |||
编辑工程 | ✓ | ✓ | |||
添加deploy keys | ✓ | ✓ | |||
配置hooks | ✓ | ✓ | |||
切换visibility level | ✓ | ||||
切换工程namespace | ✓ | ||||
移除工程 | ✓ | ||||
强制提交保护分支 | ✓ | ||||
移除保护分支 | ✓ |
PS: 关于保护分支的设置,可以进入Settings->Protected branches进行管理
- 组权限
行为 | Guest | Reporter | Developer | Master | Owner |
浏览组 | ✓ | ✓ | ✓ | ✓ | ✓ |
编辑组 | ✓ | ||||
创建子组 | ✓ | ||||
组中创建项目 | ✓ | ✓ | |||
管理组成员 | ✓ | ||||
移除组 | ✓ | ||||
管理组标签 | ✓ | ✓ | ✓ | ✓ | |
创建/编辑/删
除组里程碑 |
✓ | ✓ | ✓ |
- 设置项目用户角色
- 创建账号
登录root管理员账户,创建用户,如下图
- 设置用户角色
如下图,具体角色权限详见上一节