一、基础介绍

  1、简介
    一个基于GIT的源码托管解决方案
    基于rubyonrails开发
    集成了nginx postgreSQL redis sidekiq等组件


  2、安装要求
    2g内存以上,有点占内存,我的2g内存创建项目适合就报503错误,调大一点就正常了

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

    这里使用centos7 64位


  3、默认用户
    root/5iveL!fe,正常部署好登陆回要求改密码


  4、常用命令
    gitlab-ctl status
    gitlab-ctl start
    gitlab-ctl stop
      gitlab-ctl restart
    gitlab-ctl tail nginx 查看日志


  5、组件
    nginx 静态web
    gitlab-shell 用于处理git命令和修改
    gitlab-workhorse 轻量级的反向代理服务器
    logrotate 日志文件管理工具
    postgresql 数据库
    redis 缓存数据库
    sidekiq 用于在后台执行队列任务(异步执行)、
    unicorn gitlab rails 应用是托管在这个服务器上面的


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


  7、变更主配置文件
    gitlab-ctl reconfigure 重置配置文件
    gitlab-ctl show-config 验证配置文件
    gitlab-ctl restart 重启gitlab服务

二、安装gitlab


  1、安装依赖
    yum install curl policycoreutils openssh-server openssh-clients postfix

    systemctl enable sshd
    systemctl start sshd
    systemctl enable postfix
    systemctl start postfix

  2、rpm安装
    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm
    yum install gitlab
    rpm -ivh gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm

 1 [root@web1 ~]# rpm -ivh gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm
 2 warning: gitlab-ce-11.10.4-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
 3 Preparing...                          ################################# [100%]
 4 Updating / installing...
 5    1:gitlab-ce-11.10.4-ce.0.el7       ################################# [100%]
 6 It looks like GitLab has not been configured yet; skipping the upgrade script.
 7 
 8        *.                  *.
 9       ***                 ***
10      *****               *****
11     .******             *******
12     ********            ********
13    ,,,,,,,,,***********,,,,,,,,,
14   ,,,,,,,,,,,*********,,,,,,,,,,,
15   .,,,,,,,,,,,*******,,,,,,,,,,,,
16       ,,,,,,,,,*****,,,,,,,,,.
17          ,,,,,,,****,,,,,,
18             .,,,***,,,,
19                 ,*,.
20   
21 
22 
23      _______ __  __          __
24     / ____(_) /_/ /   ____ _/ /_
25    / / __/ / __/ /   / __ `/ __ \
26   / /_/ / / /_/ /___/ /_/ / /_/ /
27   \____/_/\__/_____/\__,_/_.___/
28   
29 
30 Thank you for installing GitLab!
31 GitLab was unable to detect a valid hostname for your instance.
32 Please configure a URL for your GitLab instance by setting `external_url`
33 configuration in /etc/gitlab/gitlab.rb file.
34 Then, you can start your GitLab instance by running the following command:
35   sudo gitlab-ctl reconfigure
36 
37 For a comprehensive list of configuration options please see the Omnibus GitLab readme
38 https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
39 
40 [root@web1 ~]# 

     也可以yum方式安装,添加以下源即可

1 或者添加yum源
2 [root@web1 yum.repos.d]# vim gitlab-ce.repo
3 
4 [gitlab-ce]
5 name=gitlab-ce
6 baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el$releasever
7 gpgcheck=0
8 enabled=1
9 ~                                                    

 

  3、修改配置文件

    vim /etc/gilab/gitlab.rb

      external_url 'http://192.168.216.51'

   4、重置配置文件,gitlab就生效了

    gitlab-ctl reconfigure

   5、测试

    

    流程:修改密码>root用户登陆>登陆进入界面

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第1张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第2张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第3张

 

    现在已经登陆进来了

三、Gitlab的权限管理

  首先创建对象流程

    创建组

    创建用户

    创建项目

    授权项目用户

 

    

  1、创建一个组

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第4张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第5张

  点击create

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第6张

 

    下面向组里面添加成员,这里还没有创建用户,开始创建用户

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第7张

 

  2、创建三个用户

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第8张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第9张

 

  点击create创建,以此类推创建三个

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第10张

    创建完用户和组就可以创建项目了

    

  3、创建一个项目

 

    新建了一个proj1/test的库

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第11张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第12张

 

  

  4、添加ssh keys

    SSH KEY

      个人SSH KEY:创建ssh key >将公钥导入用户ssh key

      Deploy KEY:创建deploy key >将deploy key 导入gitlab并在项目中允许

 

   1)个人 SSH KEY

    复制公钥,粘贴到,user setting>SSH Keys

 1 [root@web1 ~]# cd /root/.ssh/
 2 [root@web1 .ssh]# ll 
 3 total 4
 4 -rw-r--r-- 1 root root 519 Apr 18 17:28 known_hosts
 5 [root@web1 .ssh]# ssh-keygen
 6 Generating public/private rsa key pair.
 7 Enter file in which to save the key (/root/.ssh/id_rsa): 
 8 Enter passphrase (empty for no passphrase): 
 9 Enter same passphrase again: 
10 Your identification has been saved in /root/.ssh/id_rsa.
11 Your public key has been saved in /root/.ssh/id_rsa.pub.
12 The key fingerprint is:
13 SHA256:+QcJvTcCplOp7IlgcFpKVKIS5SsRfkKbQntbQ9eMPBE root@web1
14 The key's randomart image is:
15 +---[RSA 2048]----+
16 |o*o. ..E*        |
17 |*+= . .+ =       |
18 |*B+o o  B .      |
19 |+B+.o..= + o     |
20 |+ +.  = S = o    |
21 | o . o o . + .   |
22 |    . o   . .    |
23 |           .     |
24 |                 |
25 +----[SHA256]-----+
26 [root@web1 .ssh]# ll
27 total 12
28 -rw------- 1 root root 1679 May  8 16:40 id_rsa
29 -rw-r--r-- 1 root root  391 May  8 16:40 id_rsa.pub
30 -rw-r--r-- 1 root root  519 Apr 18 17:28 known_hosts
31 [root@web1 .ssh]# cat id_rsa.pub 
32 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC4n1yMW2IoWIU0NtcaBzc3nn+M1mWeeOKi9DB8QrLDk3YtjO2WPZ1MpF+CYiH59NWlKRRypNpccfiS8aMeA5zHnR33gvuK/C6j40McXOs5q/2xjvlD19yk4nSMp46EBv2lIQqfonzOvlVpZbwihUce6I30vLRkDcBMmDuY4JQR+o/72jM8GCt/809YGvVMe3zESc6ava2uoGksataW9Cr3ORiMPilgwx+l00JHEsPxqZ6bNFsLGCPI4UONj2pRD9VR/Os3Zr80oKxM4B+1TZHExTQicQoBLdm53n8LZOgxItvywTPR40EZiro9FlWFBrHlJMJWHSAzXd8GdsLOILOb root@web1 33 [root@web1 .ssh]#

 

    首先需要两个开发者设置密码,登陆进去设置ssh key

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第13张

 

    设置好密码分别登陆

 

    linux 系统为dev1

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第14张

 

    windows为dev2

    window,安装git

      下载地址:https://gitforwindows.org/

    设置目录,选一个目录右键Git bash here

    Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第15张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第16张

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第17张

 

   5、测试效果

    测试以下,已经打通权限了,提示似乎是个空库

    linux测试

1 [root@web1 .ssh]# git clone git@192.168.216.51:proj1/test.git 2 Cloning into 'test'... 3 The authenticity of host '192.168.216.51 (192.168.216.51)' can't be established.
4 ECDSA key fingerprint is SHA256:kvAeuWOn6RFSXvl5qFIszQEx9gLizuZER+I4VJkpAso. 5 ECDSA key fingerprint is MD5:b7:ef:e0:3c:8f:97:01:c2:5c:9a:2e:fc:4d:e2:99:83. 6 Are you sure you want to continue connecting (yes/no)? yes 7 Warning: Permanently added '192.168.216.51' (ECDSA) to the list of known hosts. 8 warning: You appear to have cloned an empty repository.

    

    windows测试

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第18张

 

   

四、Gitlab的issue管理

    创建milestone

    创建issue

    创建分支

    合并分支

    Todos

 

    Fix #issue_id

    Close #issue_id

 

  1、第一步创建Milestone

    图示如下:

 

 

   Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第19张

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第20张

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第21张

 

 

   2、创建issue

    如下图示:

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第22张

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第23张

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第24张

 

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第25张

 

     

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第26张

 

    以此类推,创建一共四个issue

 

  3、dev1 创建分支,开发首页

 1 [root@web1 test]# ll 
 2 total 16
 3 -rw-r--r-- 1 root root  8 May  7 20:36 123.html
 4 -rw-r--r-- 1 root root 12 May  7 20:39 456.html
 5 -rw-r--r-- 1 root root 25 May  7 20:25 index.html
 6 -rw-r--r-- 1 root root 14 May  7 20:36 news.html
 7 drwxr-xr-x 3 root root 32 May  8 18:13 test
 8 [root@web1 test]# cd test
 9 [root@web1 test]# ll 
10 total 4
11 -rw-r--r-- 1 root root 6 May  8 18:13 readme
12 [root@web1 test]# git checkout -b shouye 13 Switched to a new branch 'shouye'
14 [root@web1 test]# git status 15 # On branch shouye
16 nothing to commit, working directory clean
17 [root@web1 test]# echo "<h1>welcom to web1</h1>" >index.html 18 [root@web1 test]# ll 
19 total 8
20 -rw-r--r-- 1 root root 24 May  9 11:58 index.html
21 -rw-r--r-- 1 root root  6 May  8 18:13 readme27 [root@web1 test]# git add . 28 [root@web1 test]# git commit -m "shouye"
29 [shouye 0a6efde] shouye
30  1 file changed, 1 insertion(+)
31  create mode 100644 index.html
32 [root@web1 test]# git push origin shouye 33 Counting objects: 4, done.
34 Delta compression using up to 4 threads.
35 Compressing objects: 100% (2/2), done.
36 Writing objects: 100% (3/3), 295 bytes | 0 bytes/s, done.
37 Total 3 (delta 0), reused 0 (delta 0)
38 remote: 
39 remote: To create a merge request for shouye, visit:
40 remote:   http://192.168.216.51/proj1/test/merge_requests/new?merge_request%5Bsource_branch%5D=shouye
41 remote: 
42 To git@192.168.216.51:proj1/test.git
43 * [new branch] shouye -> shouye 44 [root@web1 test]# 

 

    dev1登陆gitlab  web界面,点击repository,可以看到一个push上来的代码文件

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第27张

 

  4、合并到主干

    dev1登陆gitlab  web界面

    点击repository--》create merge request--》填写相关信息交给pm处理--》点击sumbmit merge request

  Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第28张

 

    填上相关信息,这个合并需要pm来做,dev1提交申请

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第29张

 

     提交后的状态如下:

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第30张

    

   pm登陆gitlab web界面

  可以看到一个merge requests--》点击旁边的todos---》检查代码确认---》点击merge

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第31张

     限制可以看到是open状态,检查没有问题就点merge

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第32张

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第33张

 

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第34张

 

     

  点击branches 可以看到merged

 

 Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第35张

    切换dev1账户,查看并点击done完成

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第36张

 

    切换pm,点击milestones可以看到整个进度

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第37张

     接着点击下面issues看看

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第38张

     还是open状态,不应该啊,应该完成的就不是open状态

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第39张

    接下来需要点击这个完成的issue,然后点击close issue 就可以了

 

Centos7安装gitlab11 学习笔记之基础概念、部署安装、权限管理、issue管理 随笔 第40张

 

      每次完成还需要点close有点麻烦,接下来看看如何解决

 

      切换到主干pull以下,然后可以后面可以试试dev1   切换到master能不能上传,这里就不演示了,是不能上传的,因为dev1的权限是开发者

 1 [root@web1 test]# git checkout master  2 Switched to branch 'master'
 3 [root@web1 test]# ll 
 4 total 4
 5 -rw-r--r-- 1 root root 6 May  8 18:13 readme
 6 [root@web1 test]# git pull  7 remote: Enumerating objects: 1, done.
 8 remote: Counting objects: 100% (1/1), done.
 9 remote: Total 1 (delta 0), reused 0 (delta 0)
10 Unpacking objects: 100% (1/1), done.
11 From 192.168.216.51:proj1/test
12    7ec452a..b19d103  master     -> origin/master
13 Updating 7ec452a..b19d103
14 Fast-forward
15  index.html | 1 +
16  1 file changed, 1 insertion(+)
17  create mode 100644 index.html
18 [root@web1 test]# ll 19 total 8
20 -rw-r--r-- 1 root root 24 May  9 15:23 index.html
21 -rw-r--r-- 1 root root  6 May  8 18:13 readme
22 [root@web1 test]#

     

    创建第2个分支新闻,news,并上传

 

 1 [root@web1 test]# git checkout -b news  2 Switched to a new branch 'news'
 3 [root@web1 test]# echo "news " >news.html  9 [root@web1 test]# git add . 10 [root@web1 test]# git commit -m "close #2"
11 [news 9503883] close #2
12  1 file changed, 1 insertion(+)
13  create mode 100644 news.html
14 [root@web1 test]# git push origin news
15 Counting objects: 4, done.
16 Delta compression using up to 4 threads.
17 Compressing objects: 100% (2/2), done.
18 Writing objects: 100% (3/3), 309 bytes | 0 bytes/s, done.
19 Total 3 (delta 0), reused 0 (delta 0)
20 remote: 
21 remote: To create a merge request for news, visit:
22 remote:   http://192.168.216.51/proj1/test/merge_requests/new?merge_request%5Bsource_branch%5D=news
23 remote: 
24 To git@192.168.216.51:proj1/test.git
25  * [new branch]      news -> news
26 [root@web1 test]# 

 

注意:

git commit -m "close #2"的意义在于添加标签close #2 上一部最后需要点击close issue,这里添加close标签就不用点了,会自动生效。

 gitlab 上面的操作和第一个分支首页一样,只是最后不需要在去点close,这是因为添加了close #2 的注释

 

 

转载请注明出处:https://www.cnblogs.com/zhangxingeng/p/10826886.html 

 

   

  

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄