CentOS安装gitlab服务及创建git仓库实践笔记
Posted 肖永威
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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
允许http服务,打开防火墙
[root@DeepLearning python]$ firewall-cmd --permanent --add-service=http
[root@DeepLearning python]$ systemctl reload firewalld
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
安装rpm包:
[root@DeepLearning python]$ rpm -i gitlab-ce-10.0.0-ce.0.el7.x86_64.rpm
安装过程需要些时间,如果出现下图,则说明安装成功。
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.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'
Error executing action
create
on resource ‘user[GitLab user and group]’
由于先前已经在CentOS7.2系统中安装了git服务,过程中可能会报错如上错误,需要将配置文件中username改为"gitlab"。
user['username'] = "gitlab"
user['group'] = "gitlab"
执行编译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.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.5. 停止服务
gitlab-ctl stop
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工具(略)。
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'.
最开始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
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
以上是关于CentOS安装gitlab服务及创建git仓库实践笔记的主要内容,如果未能解决你的问题,请参考以下文章