• CentOS安装gitlab服务及创建git仓库实践笔记


    GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。安装方法是参考GitLab在GitHub上的Wiki页面。Gitlab是被广泛使用的基于git的开源代码管理平台,基于Ruby on Rails构建,主要针对软件开发过程中产生的代码和文档进行管理,Gitlab主要针对group和project两个维度进行代码和文档管理,其中group是群组,project是工程项目,一个group可以管理多个project,可以理解为一个群组中有多项软件开发任务,而一个project中可能包含多个branch, 意为每个项目中有多个分支, 分支间相互独立, 不同分支可以进行归并。

    作者本人客串配置组织级管理员,系统的实践配置管理及其工具gitlab过程笔记。

    1. 安装GitLab服务

    1.1. 安装依赖包

    环境:CentOS 7.2。
    如果已经安装openssh、postfix,以及防火墙忽略此部分内容。

    [root@DeepLearning python]$ sudo yum install -y curl policycoreutils-python openssh-server
    [root@DeepLearning python]$ systemctl start sshd
    
    [root@DeepLearning python]$ yum install postfix
    [root@DeepLearning python]$ systemctl enable postfix
    
    • 1
    • 2
    • 3
    • 4
    • 5

    允许http服务,打开防火墙

    [root@DeepLearning python]$ firewall-cmd --permanent --add-service=http
    [root@DeepLearning python]$ systemctl reload firewalld
    
    • 1
    • 2

    1.2. 安装GitLab软件包

    下载rpm包:

    wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
    
    • 1

    安装rpm包:

    [root@DeepLearning python]$ rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
    
    • 1

    安装过程需要些时间,如果出现下图,则说明安装成功。

    在这里插入图片描述

    Thank you for installing GitLab!
    GitLab was unable to detect a valid hostname for your instance.
    Please configure a URL for your GitLab instance by setting `external_url`
    configuration in /etc/gitlab/gitlab.rb file.
    Then, you can start your GitLab instance by running the following command:
      sudo gitlab-ctl reconfigure
    
    For a comprehensive list of configuration options please see the Omnibus GitLab readme
    https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.3. 编辑配置文件

    修改gitlab配置文件指定服务器ip和自定义端口(默认端口8080):

    vim /etc/gitlab/gitlab.rb

    ## GitLab URL
    ##! URL on which GitLab will be reachable.
    ##! For more details on configuring external_url see:
    ##! https://docs.gitlab.com/omnibus/settings/configuration.html#configuring-the-external-url-for-gitlab
    external_url 'http://192.168.1*.2**:8888'
    
    • 1
    • 2
    • 3
    • 4
    • 5

    Error executing action create on resource ‘user[GitLab user and group]’

    由于先前已经在CentOS7.2系统中安装了git服务,过程中可能会报错如上错误,需要将配置文件中username改为"gitlab"。

    user['username'] = "gitlab"
    user['group'] = "gitlab"
    
    • 1
    • 2

    执行编译gitlib配置。

    [root@DeepLearning python]# gitlab-ctl reconfigure
    
    Starting Chef Client, version 12.12.15
    resolving cookbooks for run list: ["gitlab"]
    ......
    Running handlers:
    Running handlers complete
    Chef Client finished, 356/515 resources updated in 02 minutes 04 seconds
    gitlab Reconfigured!
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    1.4. 启动服务

    gitlab-ctl restart
    
    ok: run: gitaly: (pid 12810) 0s
    ok: run: gitlab-monitor: (pid 12828) 0s
    ok: run: gitlab-workhorse: (pid 12867) 1s
    ok: run: logrotate: (pid 12884) 0s
    ok: run: nginx: (pid 12890) 1s
    ok: run: node-exporter: (pid 12901) 0s
    ok: run: postgres-exporter: (pid 12907) 0s
    ok: run: postgresql: (pid 12917) 0s
    ok: run: prometheus: (pid 12925) 0s
    ok: run: redis: (pid 12938) 1s
    ok: run: redis-exporter: (pid 12942) 0s
    ok: run: sidekiq: (pid 12959) 0s
    ok: run: unicorn: (pid 12968) 0s
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    1.5. 停止服务

     gitlab-ctl stop
    
    • 1

    1.6. 其他

    发信系统用的默认的postfix,smtp是默认开启的,两个都启用了,两个都不会工作。

    关闭smtp方法:
    vim /etc/gitlab/gitlab.rb

    把#gitlab_rails[‘smtp_enable’] = true 改为 gitlab_rails[‘smtp_enable’] = false

    修改后执行gitlab-ctl reconfigure。

    2. GitLab配置管理基本概念

    2.1. 群组 / 项目

    群组(group)和项目(project)的关系我们可以简单的理解成树(tree)的节点和其分支的关系。一个群组可以包含一个或多个项目。

    使用群组,可以将相关的项目组合在一起,并允许成员同时访问多个项目。群组也可以嵌套在子组中,建议最多嵌套一层。项目的命名我们建议前缀组的名称。项目的所属关系可以转移。

    对于一个公司来说,通常会有很多研发小组,通常情况下,各个研发小组的项目是只允许小组内成员访问的,GitLab通过群组这个概念来区分小组,从而实现小组间项目隔离;

    2.2. 群组 / 项目访问(可见)级别

    创建群组或者创建项目时,需要设置可见级别,默认为 Internal。有三种级别可选:

    • private:只有项目成员访问才允许访问该项目。必须明确给每一个用户授权访问。
    • Internal:任何已登录的用户均可以访问该项目。
    • public:任何人都可以访问该项目,无论是否登录。

    基于信息安全及知识产权等原因,企业商用项目所涉及到群组 / 项目,原则上应该保证知道的人越少越好,Group 和 Project 的访问级别均应该设置为 Private。

    对于模板和纯技术类项目,应该设置为 public 或者 internal。

    还有一类项目,希望所有人知道它的存在,可以浏览,可以搜索,但是不希望所有人都能够获取它的代码。那我们可以这样来设置:项目的访问级别是 Internal。

    项目的(Settings(设置) -> General(常规) -> Permissions(权限) -> Repository(仓库)) 权限设置为: Only Project Members。

    2.3. 用户权限

    GitLab 的权限分为群组和项目权限。项目的默认权限继承群组的权限。GitLab有Guest(访客)、Reporter(报告者)、Developer(开发者)、Master(管理者)、Owner(所有者)五种身份设置,不同的身份分别具有不同的操作权限.,具体权限如下:

    • Guest:可以创建issue、发表评论,不能读写版本库
    • Reporter:可以克隆代码,不能提交,QA、PM可以赋予这个权限
    • Developer:可以克隆代码、开发、提交、push,RD可以赋予这个权限
    • Master:可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
    • Owner:可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

    3. 应用GitLab服务

    首次登录(http://192.168.1*…2**:8888/),系统默认使用root用户,并初始化设置密码。

    3.1. 创建项目

    在创建项目之前,最好先创建群组,效果如下:
    在这里插入图片描述
    在“bigdata”群组下,新建“caulsal”项目,详见下图。
    在这里插入图片描述
    编辑项目(类似git上完成首次提交操作后,才允许创建分支)。
    在这里插入图片描述
    如上图,编辑.gitignore文件,例如下图忽略python配置、临时文件等等。
    在这里插入图片描述

    3.2. 添加分支

    Git常规分支管理:

    • master 分支 : 主分支,不轻易改动,主要做正式发版使用,一般发版的包都从 master 分支中构建
      pre-release 分支 : 预发布分支,是在正式发版前的测试使用分支,测试使用的包都从此处构建,测试完成后合并到 master 分支进行发版;
    • developer 分支 : 开发分支,每个版本的所有需求开发所在分支;
    • feature 分支 : 具体的需求开发分支,因为开发大都是团队协作,开发成员负责自己的需求开发时,一般建议从 developer 分支中重新拉一条分支出来,作为成员自己的开发分支,最后再合并到 developer 分支中,所以 feature 分支一般会有多个;
    • hotfix 分支 : 紧急修复分支,如果线上版本遇到bug,则一般建议从 master 分支拉出一条分支,作为紧急修复分支,在 hotfix 测试没有问题后,合并到 master 进行紧急发版。

    打开项目创建分支,默认创建master分支(初始化,首次提交时自动创建)。
    在这里插入图片描述

    添加开发分支(develop)。
    在这里插入图片描述

    3.3. *git客户端添加分支

    在客户端初始化仓库,gitlab已经给出指导操作命令:
    git commit -m '初始化项目'
    客户端本地安装git工具(略)。

    E:\temp>git clone gitlab@192.168.1*.2**:bigdata/test.git
    Cloning into 'test'...
    warning: You appear to have cloned an empty repository.
    E:\temp>cd test
    
    E:\temp\test>notepad readme.md
    
    E:\temp\test>git add readme.md
    E:\temp\test>git commit -m "add readme.md"
    [master (root-commit) 0245766] add readme.md
     1 file changed, 1 insertion(+)
     create mode 100644 readme.md
    
    E:\temp\test>git push -u origin master
    Enumerating objects: 3, done.
    Counting objects: 100% (3/3), done.
    Writing objects: 100% (3/3), 231 bytes | 231.00 KiB/s, done.
    Total 3 (delta 0), reused 0 (delta 0), pack-reused 0
    To 192.168.1*.2**:bigdata/test.git
     * [new branch]      master -> master
    Branch 'master' set up to track remote branch 'master' from 'origin'.
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21

    最开始push时出现如下问题:
    remote: HTTP Basic: Access denied
    fatal: Authentication failed for ‘http://192.168.1*.2**:8888/bigdata/test.git/’
    原因是本地仓库是,解决方案有两个办法:

    • 增加文件再提交,推送
    • 运行空提交
      $ git commit -m “initial commit” --allow-empty
      $ git push

    添加新的分支:

    E:\temp\test>git branch develop
    E:\temp\test>git branch
      develop
    * master
    
    E:\temp\test>git commit -m "develop" --allow-empty
    [master 6ea5f1b] develop
    
    E:\temp\test>git push origin develop:develop
    Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
    remote:
    remote: To create a merge request for develop, visit:
    remote:   http://192.168.19.229:8888/bigdata/test/merge_requests/new?merge_request%5Bsource_branch%5D=develop
    remote:
    To 192.168.1*.2**:bigdata/test.git
     * [new branch]      develop -> develop
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    3.4. 合并分支

    如果先创建分支,而后提交文档到主分支中,而非从各个子分支逐步提交合并上来的情况,使用如下步骤把主分区内容合并到其他分支中。
    在这里插入图片描述

    3.5. 关于客户端登录账户和密码管理

    对于输入密码错误/修改,更换账户的情况,可以使用如下方法:打开控制面板–>用户账户–>凭证管理器–>windows凭据,删除即可。
    在这里插入图片描述

    4. 总结

    gitlab-ce作为开源配置服务工具,部署与使用比git简单,关键还是怎么做好配置管理。

    在这里插入图片描述

    很多公司设置了组织级配置管理员与项目级配置管理员,以下为建议的对这两种岗位的职责定义。

    项目级配置管理员的职责:

    • 制定配置管理计划
    • 建立并维护配置管理库
    • 建立并发布基线
    • 物理审计(PCA)
    • 跟踪并关闭变更申请
    • 报告配置状态

    组织级CM的职责:

    • 为项目组建立初始的配置库
    • 向项目组成员提供配置管理方面的培训及技术支持
    • 配置管理工具的定制
    • 配置管理审计
    • 对外发布产品
    • 维护更新配置管理标准过程及模板
    • 备份配置库

    参考:

    [1]. 苍煜. CentOs7 安装Gitlab. CSDN博客. 2022.06
    [2]. 码途有道. 常规的Git管理流程. 简书. 2022.03
    [3]. 麦哲思科技任甲林. 组织级配置管理员与项目级配置管理员的职责定义. CSDN博客. 2009.12

  • 相关阅读:
    对表单的操作说明》
    揭秘计算机奇迹:探索I/O设备的神秘世界!
    怎么找抖音视频素材?在哪里找爆款热门的素材呢?
    SpringCloud - Spring Cloud Alibaba 之 Seata分布式事务服务详解;部署(十八)
    FBX文件结构解读【文本格式】
    代码随想录算法训练营day58||739. 每日温度 ||496.下一个更大元素 I ||503.下一个更大元素II
    基于Python实现的模拟退火算法
    c语言map的详细用法
    C++的explicit是什么?
    【acwing总结】归并排序模板
  • 原文地址:https://blog.csdn.net/xiaoyw/article/details/127769084