版本控制是指对软件开发过程中各种程序代码、配置文件及说明文档等文件变更的管理,是软件配置管理的核心思想之一。
版本控制的另一个重要功能是并行开发。软件开发往往是多人协同作业,版本控制可以有效地解决版本的同步以及不同开发者之间的开发通信问题,提高协同开发的效率。并行开发中最常见的不同版本软件的错误(Bug)修正问题也可以通过版本控制中分支与合并的方法有效地解决。
具体来说,在每一项开发任务中,都需要首先设定开发基线,确定各个配置项的开发初始版本,在开发过程中,开发人员基于开发基线的版本,开发出所需的目标版本。
当发生需求变更时,通过对变更的评估,确定变更的影响范围,对被影响的配置项的版本进行修改,根据变更的性质使配置项的版本树继续延伸或产生新的分支,形成新的目标版本,而对于不受变更影响的配置项则不应发产生变动。
同时,版本控制能够将变更所产生的对版本的影响进行记录和跟踪。必要时还可以回退到以前的版本。例如当开发需求或需求变更被取消时,就需要有能力将版本回退到开发基线版本。在曾经出现过的季度升级包拆包和重新组包的过程中,其实就是将部分配置项的版本回退到开发基线,将对应不同需求的不同分支重新组合归并,形成新的升级包版本。
GitLab官网文档:https://docs.gitlab.com/ee/
GitLab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的Web服务。
GitLab可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。
GitLab可以管理团队对仓库的访问,它可以很轻松浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
git、gitlab、GitHub的简单区别
git和svn区别
gitlab的优势
GitLab由主要由以下服务构成,他们共同承担了Gitlab的运作需要
gitlab的工作流程:
[root@node6 ~]# uname -r
4.18.0-257.el8.x86_64
[root@node6 ~]# cat /etc/redhat-release
CentOS Stream release 8
[root@node6 ~]# grep baseurl /etc/yum.repos.d/CentOS-Base.repo
# remarked out baseurl= line instead.
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/BaseOS/$basearch/os/
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/extras/$basearch/os/
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/centosplus/$basearch/os/
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/PowerTools/$basearch/os/
baseurl=http://mirrors.aliyun.com/centos-vault/8.5.2111/AppStream/$basearch/os/
//安装git
[root@node6 ~]# yum -y install git
安装过程略
//安装依赖包
[root@node6 ~]# yum -y install curl openssh-server openssh-clients postfix cronie
安装过程略....
//启动postfix服务并设置开机自启
[root@node6 ~]# systemctl restart postfix.service
[root@node6 ~]# systemctl enable postfix.service
Created symlink /etc/systemd/system/multi-user.target.wants/postfix.service → /usr/lib/systemd/system/postfix.service.
[root@node6 ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*
LISTEN 0 100 127.0.0.1:25 0.0.0.0:*
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
//下载gitlab的rpm包
[root@node6 ~]# cd /usr/src/
[root@node6 src]# ls
debug kernels
[root@node6 src]# wget http://mirror.centos.org/centos/7/os/x86_64/Packages/policycoreutils-python-2.5-34.el7.x86_64.rpm
[root@node6 src]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm
[root@node6 src]# ls
debug kernels
gitlab-ce-15.2.2-ce.0.el7.x86_64.rpm policycoreutils-python-2.5-34.el7.x86_64.rpm
//安装gitlab
[root@node6 src]# rpm -ivh --nodeps policycoreutils-python-2.5-34.el7.x86_64.rpm
warning: policycoreutils-python-2.5-34.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Verifying... ################################# [100%]
Preparing... ################################# [100%]
Updating / installing...
1:policycoreutils-python-2.5-34.el7################################# [100%]
[root@node6 src]# rpm -ivh gitlab-ce-15.2.2-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//修改配置文件
gitlab-ctl start #启动全部服务
gitlab-ctl restart#重启全部服务
gitlab-ctl stop #停止全部服务
gitlab-ctl restart nginx #重启单个服务,如重启nginx
gitlab-ctl status #查看服务状态
gitlab-ctl reconfigure #使配置文件生效
gitlab-ctl show-config #验证配置文件
gitlab-ctl uninstall #删除gitlab(保留数据)
gitlab-ctl cleanse #删除所有数据,从新开始
gitlab-ctl tail <service name>查看服务的日志
gitlab-ctl tail nginx #如查看gitlab下nginx日志
gitlab-rails console #进入控制台
[root@node6 ~]# vim /etc/gitla/gitlab.rb
...... //此处为省略内容
external_url 'http://192.168.177.140' //将此处设为gitlab的服务器ip地址亦或域名
...... //此处为省略内容
//重载配置文件并重启gitlab
[root@node6 ~]# gitlab-ctl reconfigure
[root@node6 ~]# gitlab-ctl restart
ok: run: alertmanager: (pid 9410) 0s
ok: run: gitaly: (pid 9425) 1s
ok: run: gitlab-exporter: (pid 9441) 0s
ok: run: gitlab-kas: (pid 9443) 1s
ok: run: gitlab-workhorse: (pid 9453) 0s
ok: run: grafana: (pid 9462) 1s
ok: run: logrotate: (pid 9483) 0s
ok: run: nginx: (pid 9489) 0s
ok: run: node-exporter: (pid 9497) 1s
ok: run: postgres-exporter: (pid 9507) 0s
ok: run: postgresql: (pid 9519) 0s
ok: run: prometheus: (pid 9528) 1s
ok: run: puma: (pid 9544) 0s
ok: run: redis: (pid 9549) 0s
ok: run: redis-exporter: (pid 9631) 1s
ok: run: sidekiq: (pid 9640) 0s
//查看当前的gitlab版本
[root@node6 ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 15.2.2
//破解管理员密码
[root@node6 ~]# gitlab-rails console -e production
--------------------------------------------------------------------------------
Ruby: ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-linux]
GitLab: 15.2.2 (4ecb014a935) FOSS
GitLab Shell: 14.9.0
PostgreSQL: 13.6
------------------------------------------------------------[ booted in 27.73s ]
Loading production environment (Rails 6.1.4.7)
irb(main):001:0> user = User.where(id: 1).first //id为1的是超级管理员
=> #<User id:1 @root>
irb(main):002:0> user.password = '12341234' //密码必须至少8个字符
=> "12341234"
irb(main):003:0> user.password_confirmation = '12341234'
irb(main):004:0> user.save! //保存修改,若无问题将返回true
Enqueued ActionMailer::DeliveryJob (Job ID: 7feb0464-15aa-4151-be94-2e657a65494e) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):005:0> exit //退出