gitlab之一: gitlab安装配置使用

参考:  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、安装依赖

debian/ubuntu
sudo apt-get install curl openssh-server ca-certificates postfix
 

1.3、配置postfix邮箱

1、选择Internet site→使用FQDN默认即可
 

1.4、安装gitlab安装包

dpkg -i gitlab-ce_7.14.3-ce.1_amd64.deb

1.5、配置gitlab

sudo mkdir -p /etc/gitlab
sudo touch /etc/gitlab/gitlab.rb
sudo chmod 600 /etc/gitlab/gitlab.rb
sudo nano /etc/gitlab/gitlab.rb
 
把external_url改成部署机器的域名或者IP地址。
external_url 'http://gitlab.chepingan.com'
 
重新配置启动gitlab
sudo gitlab-ctl reconfigure
 

1.6.查看状态

sudo gitlab-ctl status
 
在浏览器中使用external_url中地址登陆
 
http://gitlab.chepingan.com/
 
默认管理员用户名和密码:
Username: root
Password: 5iveL!fe

 登录不上可能是防火墙的问题.

第一次启动的时候,需要初始化大量的东西,经常会出现502错误,通常是由于内存不足的原因导致,所以需要准备好足够的内存。官方推荐生产环境中使用2G内存,2核CPU。虚拟机中测试1GB内存基本就可以了。

管理员登陆,在网页设置中,去掉Sign-up enabled的勾选,拒绝注册
 
使用管理员可以添加用户和组
 
 

2. 汉化包的安装

这里汉化的是11.0.0 版本.
 
查看版本: 
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
11.0.0
 
汉化包下载地址:
 
8.8 以前: git clone https://gitlab.com/larryli/gitlab.git
 
8.8 以后:git clone  https://gitlab.com/xhang/gitlab.git

2.1   第一种汉化方法(没成功尴尬)

我这里11.0.0汉化包的下载。因为上面默认的不是下载11.0.0的汉化包(zh结尾的分支),需要自己指定分支来下载.
git clone https://gitlab.com/xhang/gitlab.git -b 11-0-stable-zh
 
下载下来名字是 gitlab  .
 
汉化:
 
gitlab-ctl stop
 
cp -r /opt/gitlab/embedded/service/gitlab-rails{,.ori}
 
cp -rf gitlab/*  /opt/gitlab/embedded/service/gitlab-rails/
 
gitlab-ctl start
 
访问的时候出现了502,
 
 

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

参考:  gitlab权限管理--issue管理

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
 
#点击Adminstrator这个用户 

#点击编辑

#关闭监控

#关闭服务

[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

  1. 负责人为开发人员分别创建开发分支(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 集群

原文地址:https://www.cnblogs.com/yitianyouyitian/p/9214940.html