参考: gitlab 安装和配置
gitlab下载地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/
官方教程: https://about.gitlab.com/downloads/
1. gitlab 安装
实验环境: ubuntu 14.04.
1.1、下载CE版 gitlab 安装包
注意要下载ubuntu对应版本的gitlab, 如 trusty(ubntu 14.04的代号),bionic(ubntu 18.04代号),xenial(ubntu 16.04代号).
官网下载不下来,用下面的源下载.
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/gitlab-ce_7.14.3-ce.1_amd64.deb
注意: 第一次实验的是安装gitlab-ce_7.14.3-ce.1_amd64.deb ,第二次实验安装了 gitlab-ce_11.0.0-ce.0_amd64.deb.安装过程一模一样,照样可以跑起来.
1.2、安装依赖
1.3、配置postfix邮箱
1.4、安装gitlab安装包
dpkg -i gitlab-ce_7.14.3-ce.1_amd64.deb
1.5、配置gitlab
1.6.查看状态
登录不上可能是防火墙的问题.
第一次启动的时候,需要初始化大量的东西,经常会出现502错误,通常是由于内存不足的原因导致,所以需要准备好足够的内存。官方推荐生产环境中使用2G内存,2核CPU。虚拟机中测试1GB内存基本就可以了。
2. 汉化包的安装
2.1 第一种汉化方法(没成功尴尬)
2.2 第二种汉化方法(成功耶)
参考: https://blog.whsir.com/post-3081.html
Gitlab中文社区版地址:https://gitlab.com/xhang/gitlab
1、克隆版本库
cd /usr/local/src/
git clone https://gitlab.com/xhang/gitlab.git
2、获取当前Gitlab版本
gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
3、比较汉化标签和原标签,导出patch用的diff文件
cd /usr/local/src/gitlab
git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
4、先停止gitlab
gitlab-ctl stop
5、导入汉化补丁
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../11.0.0-zh.diff
PS:如果出现类似以下内容,则按住回车,一直跳过就行了
can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js |index eb0f06e..73e4833 100644 |--- a/app/assets/javascripts/awards_handler.js |+++ b/app/assets/javascripts/awards_handler.js -------------------------- File to patch:
6、然后启动gitlab
3. gitlab 的使用
3.1 关闭注册功能
在gitlab的首页点击, 配置GitLab ---->设置---->Sign-up restrictions 里面去设置.
3.2 gitlab组件和目录
组件
root@A1-Back:/# gitlab-ctl status run: alertmanager: (pid 30583) 1901863s; run: log: (pid 11484) 1989543s run: gitaly: (pid 30600) 1901856s; run: log: (pid 11464) 1989544s run: gitlab-monitor: (pid 30612) 1901856s; run: log: (pid 11439) 1989544s run: gitlab-workhorse: (pid 30625) 1901855s; run: log: (pid 11446) 1989544s run: logrotate: (pid 31410) 1011s; run: log: (pid 11396) 1989545s run: nginx: (pid 30641) 1901855s; run: log: (pid 11395) 1989545s run: node-exporter: (pid 30643) 1901855s; run: log: (pid 11465) 1989544s run: postgres-exporter: (pid 30729) 1901854s; run: log: (pid 11575) 1989542s run: postgresql: (pid 30735) 1901854s; run: log: (pid 11377) 1989545s run: prometheus: (pid 30743) 1901853s; run: log: (pid 11456) 1989544s run: redis: (pid 30754) 1901853s; run: log: (pid 11376) 1989545s run: redis-exporter: (pid 30758) 1901852s; run: log: (pid 11435) 1989544s run: sidekiq: (pid 30774) 1901852s; run: log: (pid 11379) 1989545s run: unicorn: (pid 30781) 1901852s; run: log: (pid 11378) 1989545s
目录
3.3 gitlab 权限管理
参考: https://www.cnblogs.com/zangxueyuan/p/9222014.html
1. 添加user
2. 添加 Group,往Group中添加user并且设定user的权限.
3. 创建project,项目的 url 组成如下:
http://ip + Groups/Users 的名字 + 项目名字.
3.4 gitlab 命令使用
参考: https://blog.csdn.net/wh211212/article/details/72627803
语法:
gitlab-ctl command (subcommand)
Service Management Commands | |
start | 启动所有服务 |
stop | 关闭所有服务 |
restart | 重启所有服务 |
status | 查看所有服务状态 |
tail | 查看日志信息 |
service-list | 列举所有启动服务 |
graceful-kill | 平稳停止一个服务 |
例子:
#启动所有服务
[root@gitlab ~]# gitlab-ctl start
#启动单独一个服务
[root@gitlab ~]# gitlab-ctl start nginx
#查看日志,查看所有日志
[root@gitlab ~]# gitlab-ctl tail
#查看具体一个日志,类似tail -f
[root@gitlab ~]# gitlab-ctl tail nginx
General Commands | |
help | 帮助 |
reconfigure | 修改配置文件之后,需要重新加载下 |
show-config | 查看所有服务配置文件信息 |
uninstall | 卸载这个软件 |
cleanse | 删除gitlab数据,重新白手起家 |
例子:
#显示所有服务配置文件
[root@gitlab ~]#gitlab-ctl show-config
#卸载gitlab
[root@gitlab ~]#gitlab-ctl uninstall
DatabaseCommands(慎重使用)
Database Commands | |
pg-upgrade | 更新postgresql版本 |
revert-pg-upgrade | 还远先前的(离现在正在使用靠近的版本)一个数据库版本 |
例子:
#升级数据库
[root@gitlab ~]# gitlab-ctl pg-upgrade
Checking for an omnibus managed postgresql: OK
Checking if we already upgraded: OK
The latest version 9.6.1 is already running,nothing to do
#降级数据库版本
[root@gitlab ~]# gitlab-ctl revert-pg-upgrade
3.3 gitlab 配置详解
名称 | 配置路径 |
gitlab配置文件 | /etc/gitlab/gitlab.rb |
unicorn配置文件 | /var/opt/gitlab/gitlab-rails/etc/unicorn.rb |
nginx配置文件 | /var/opt/gitlab/nginx/conf/gitlab-http.conf |
gitlab仓库默认位置 | /var/opt/gitlab/git-data/repositories |
修改web端口
如果80和8080端口被占用可以修改
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen"127.0.0.1:8080", :tcp_nopush => true #这一行端口修改为你要端口
#修改nginx端口
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server{ #这里的80端口修改为你所需要的端口
listen *:80;
注:
只要修改了配置文件一定要重新加载配置
修改Prometheus端口
#Prometheus默认端口是9090
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
#根据自己情况自行修改成自己需要的port
修改项目工程数量
默认安装好,你能创建的项目,只能创建10个
#第一种方式修改
[root@gitlab gitlab_pack]# vi/opt/gitlab/embedded/service/gitlab-rails/config/initializers/1_settings.rb
Settings.gitlab['default_projects_limit'] ||=10
修改成你自己所需要的参数,保存
Settings.gitlab['default_projects_limit'] ||=10000
#重新初始化
[root@gitlab postgresql]# gitlab-ctlreconfigure
#查看修改之后项目数量
注:
这个是在安装完gitlab之后修改,如果已经使用一段时间,在修改项目的数量,需要你自己在自己的用户下修改,第二次初始化,会缩短时间
#第二种方式修改
#首先登录gitlab#点击编辑
#关闭监控
#关闭服务
[root@gitlab gitlab_pack]# gitlab-ctl stop
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
把true改成false
prometheus_monitoring['enable']= true
prometheus_monitoring['enable']= false
#保存
#重新加载配置文件
[root@gitlabgitlab_pack]# gitlab-ctl reconfigure
4. gitlab 代码管理
参考: http://lishao378.blog.sohu.com/323704341.html 个人开发管理
https://blog.csdn.net/u012764358/article/details/62886427 sourcetree 和 gitlab的结合
https://blog.csdn.net/predict_wise/article/details/77898577 团队协作开发
4.1. gitlab管理使用的两种方式(http协议和ssh)
使用http协议的时候,每次pull,push 等都需要输入 用户名和密码(不同的用户不同的权限)
使用ssh免密码的话,每个用户必须先上传密钥。不同的密钥对应不同的用户所以权限也是不一样的。(假如某个开发者得到项目管理者的密钥对,他在本地认证使用的是这个密钥,那么就有了项目管理者的权限,比如管理master,所以每个用户用自己的密钥对)
4.2 gitlab团队协作开发
1. 使用fork
- 项目负责人在gitlab上新建一个项目,并分享URL给开发人员
- 开发人员在负责人的gitlab项目页面上点击“fork”按钮,将此项目fork到自己的gitlab上,这相当于是从负责人那拷贝了一份项目副本,无论开发人员如何修改代码都不会影响负责人那master分支上的代码
- 然后开发人员可以根据自己的项目分工,像对待普通项目一样做clone、add、commit、push等操作
- 如果开发人员人为一个小模块做好了,可以点击“pull request”按钮,向负责人发送代码合并请求,要合并的代码文件也会以列表的形式同时发送给负责人,此时负责人会看到开发人员的请求,经审核如果代码没问题则会合并模块,并向开发人员发送确认合并的通知
- 有的时候项目负责人也在开发,在不断更新项目,如何也让自己Github上的也跟着同步,这里参考这篇博文:
http://blog.csdn.net/sjt19910311/article/details/50596714
2. 不使用fork
-
负责人为开发人员分别创建开发分支(namedev_branch)
- 项目负责人在gitlab上新建一个项目,并为每一个开发人员创建一个开发分支(namedev_branch)
-
开发人员clone项目之后,经git branch检查发现本地只有master分支,因此也需要把属于自己的开发分支也一起获取下来
-
切换到namedev_branch分支
- 之后的操作如同对待普通项目一样
2. 负责人不为开发人员分别创建开发分支 (开发者自己创建)
虽然项目负责人不分别为开发人员创建分支,但是需要把他们添加到一个team中,否则开发人员在向项目push自己的开发分支时遇到权限错误
-
开发人员在把项目clone之后需要为自己新建一个开发分支(namedev_branch),因为经由git branch查看发现本地只有master分支
-
之后的操作如同对待普通项目一样(是在namedev_branch分支进行操作
之后,项目负责人可以在项目的gitlab主页上看到每个开发人员的工作进度,并考虑何时merge开发人员的分支到master分支上以完善项目
4.3 实验1: 多人协作开发。不用fork
1. 关闭注册功能(管理员权限)
2. 管理员添加用户(给项目负责人创建组的权限), 并给每个用户添加一个 ssh 密钥(密钥可以管理员这边生成,也可以用户自己生成发给管理员)。每个用户一个密钥对(不同的密钥在 push 等操作的时候权限是不同的,你用的哪个用户的密钥连接,你就有哪个用户的权限, ssh密钥会默认添加到 git用户的authorized_keys文件中.
3. 项目负责人 创建项目, 初始化项目,使项目拥有master分支,开启分支保护(master分支是没人开启的,只有项目管理人可以直接操作master分支)。给该项目添加成员分配权限(一般是开发者权限),并且给每个成员创建一个分支。 也可以不给项目添加成员而是在创建项目的时候选择组。
4. 开发者克隆版本库,在自己的分支上开发,提交等操作。开发者想要将自己的分支合并到master分支,需要登录gitlab发起合并请求,负责人审核后处理合并请求.
4.4 用fork
1. 管理员 禁用注册功能,建立开发人员帐号,给权限。可以给项目leader多一点权限。
2. leader创建项目并且初始化项目,使其拥有master分支。 将项目url给开发人员
3. 开发人员用自己的帐号登录,并且 派生 源项目。
4. 开发人 clone 派生的项目到本地进行开发,开发一个功能后发起合并请求。
5. 如何让自己 派生的空间 的代码和 源作者的代码同步, 参考: http://blog.csdn.net/sjt19910311/article/details/50596714
5. git客户端(TortoiseGit)Windows下的使用
参考: https://www.jianshu.com/p/9beb880332ba
https://blog.csdn.net/bird3014/article/details/72355648
https://www.cnblogs.com/ywlaker/p/6344334.html
https://www.cnblogs.com/wntd/p/5889118.html
6. gitlab 集群