廣告公司logo企業(yè)seo服務(wù)
目錄
Gitlab簡介
Gitlab工作原理
Gitlab服務(wù)構(gòu)成
Gitlab環(huán)境部署
?安裝依賴包
啟動(dòng)postfix,并設(shè)置開機(jī)自啟
設(shè)置防火墻
下載安裝gitlab rpm包
修改配置文件/etc/gitlab/gitlab.rb,生產(chǎn)環(huán)境下可以根據(jù)需求修改
重新加載配置文件
?瀏覽器登錄Gitlab輸入 http://服務(wù)器IP
打開另一臺(tái)主機(jī)
?設(shè)置發(fā)郵件功能
Gitlab簡介
Gitlab 是一個(gè)基于Git實(shí)現(xiàn)的WEB代碼倉庫托管軟件,你可以用Gitlab自己搭建一個(gè)類似于Github一樣的代碼倉庫,一般使用gitlab搭建私有代碼倉庫主要是用在公司的內(nèi)部代碼管理。
Gitlab 功能是能夠?qū)Υa的提交審核和問題跟蹤,這個(gè)對(duì)于軟件工程(代碼)質(zhì)量的管理是至關(guān)重要的。
Gitlab分為社區(qū)版(CE)和企業(yè)版(EE)。大多數(shù)的公司還是會(huì)選擇社區(qū)版。部署Gitlab是對(duì)服務(wù)器有配置要求的建議是CPU兩核,內(nèi)存4G以上。
Gitlab工作原理
gitlab的原理其實(shí)就是git的工作原理,GitHub也是基于git實(shí)現(xiàn)的
?
Remote遠(yuǎn)程倉庫:
遠(yuǎn)程倉庫的內(nèi)容可能被分布在多個(gè)地點(diǎn)的處于協(xié)作關(guān)系的本地倉庫修改,因此它可以與本地倉庫同步,也可以不同步,但是它的內(nèi)容是最舊的。
Repository本地倉庫:
這里面保存了被提交過的代碼各個(gè)版本,比起工作區(qū)和暫存區(qū)的內(nèi)容,它的內(nèi)容會(huì)舊一些,git commit 后同步index的目錄樹到本地倉庫,方便下一步通過git push同步本地倉庫與遠(yuǎn)程倉庫的同步。
index暫存區(qū):
git目錄下的index文件,暫存區(qū)會(huì)記錄git add 添加文件的相關(guān)信息(文件名、大小),不保存文件實(shí)體,通過id指向每個(gè)文件的實(shí)體,可以使用git status查看暫存區(qū)的狀態(tài),暫存區(qū)標(biāo)記了你當(dāng)前工作區(qū)中哪些內(nèi)容是被git管理的。當(dāng)你完成某個(gè)需求或者功能后需要提交代碼,那么第一步就是通過git add 先提交到暫存區(qū)。
workspace工作區(qū):
程序員進(jìn)行開發(fā)改動(dòng)的地方,是你當(dāng)前看到的,內(nèi)容也是最新的。平常我們開發(fā)就是拷貝遠(yuǎn)程倉庫中的分支,基于該分支進(jìn)行開發(fā),在開發(fā)的過程就是在工作區(qū)的操作。
總結(jié):
- 任何對(duì)象都是在工作區(qū)中誕生和修改的;
- 任何修改都是從進(jìn)入index區(qū)才開始被版本控制的;
- 只有把修改的代碼提交到本地倉庫,該修改才能在倉庫中留下痕跡;
- 與協(xié)助者分享本地的修改,可以push到遠(yuǎn)程倉庫來共享;
?
?
Gitlab服務(wù)構(gòu)成
- Nginx:靜態(tài)Web服務(wù)器
- gitlab-shell:用于處理Git命令和修改authorized keys列表
- gitlab-workhorse:輕量級(jí)的反向代理服務(wù)器(這個(gè)是個(gè)敏捷的反向代理,它會(huì)處理一些大的HTTP請(qǐng)求,比如文件的上傳下載,其他的請(qǐng)求會(huì)反向代理給Gitlab Rails應(yīng)用)
- logrotate:日志文件管理工具
- postgresql:數(shù)據(jù)庫
- redis:緩存數(shù)據(jù)庫
- sidekiq:用于在后臺(tái)執(zhí)行隊(duì)列的任務(wù)
- unicorn:Gitlab Rails應(yīng)用是托管在這個(gè)服務(wù)器上面的
Gitlab環(huán)境部署
[root@localhost ~]# hostname gitlab
[root@localhost ~]# bash
[root@gitlab ~]#
?安裝依賴包
[root@gitlab ~]# yum -y install curl openssh-server openssh-clients postfix cronie policycoreutils-python
啟動(dòng)postfix,并設(shè)置開機(jī)自啟
[root@gitlab ~]# systemctl start postfix
[root@gitlab ~]# systemctl enable postfix
設(shè)置防火墻
[root@gitlab ~]# systemctl stop firewalld
[root@gitlab ~]# iptables -F
[root@gitlab ~]# setenforce 0
下載安裝gitlab rpm包
清華開源鏡像站:??????清華大學(xué)開源軟件鏡像站 | Tsinghua Open Source Mirror
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm
--2023-08-18 09:51:35-- https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm
正在解析主機(jī) mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.15.130, 2402:f000:1:400::2
正在連接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.15.130|:443... 已連接。
已發(fā)出 HTTP 請(qǐng)求,正在等待回應(yīng)... 200 OK
長度:656975758 (627M) [application/x-redhat-package-manager]
正在保存至: “gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm”100%[===============================================================>] 656,975,758 3.97MB/s 用時(shí) 2m 43s 2023-08-18 09:54:18 (3.85 MB/s) - 已保存 “gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm” [656975758/656975758])[root@gitlab ~]# rpm -ivh gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm
警告:gitlab-ce-11.11.3-ce.0.el7.x86_64.rpm: 頭V4 RSA/SHA1 Signature, 密鑰 ID f27eab47: NOKEY
準(zhǔn)備中... ################################# [100%]
正在升級(jí)/安裝...1:gitlab-ce-11.11.3-ce.0.el7 ################################# [100%]*. *.*** ******** *****.****** *************** ********,,,,,,,,,***********,,,,,,,,,,,,,,,,,,,,*********,,,,,,,,,,,.,,,,,,,,,,,*******,,,,,,,,,,,,,,,,,,,,,*****,,,,,,,,,.,,,,,,,****,,,,,,.,,,***,,,,,*,._______ __ __ __/ ____(_) /_/ / ____ _/ /_/ / __/ / __/ / / __ `/ __ \/ /_/ / / /_/ /___/ /_/ / /_/ /\____/_/\__/_____/\__,_/_.___/
修改配置文件/etc/gitlab/gitlab.rb,生產(chǎn)環(huán)境下可以根據(jù)需求修改
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
13 external_url 'http://192.168.147.142'
重新加載配置文件
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart
[root@gitlab ~]# netstat -lnpt | grep :80tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 11982/nginx: master
- 啟動(dòng):gitlib-ctl start
- 關(guān)閉:gitlab-ctl stop
- 重啟:gitlab-ctl restart
- 重載配置:gitlab-ctl reconfigure
- 查看狀態(tài):gitlab-ctl status
查看gitlab版本
[root@gitlab ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 11.11.3
?瀏覽器登錄Gitlab輸入 http://服務(wù)器IP
?
?
?創(chuàng)建新的項(xiàng)目
?
?
?
打開另一臺(tái)主機(jī)
[root@localhost ~]# hostname jenkins
[root@localhost ~]# bash[root@jenkins ~]# git config --global user.name "jenkins"
[root@jenkins ~]# git config --global user.email "jenkins@test.com"
[root@jenkins ~]# git config --global color.ui true
[root@jenkins ~]# git config --list
user.name=jenkins
user.email=jenkins@test.com
color.ui=true
[root@jenkins ~]# git clone http://192.168.147.142/root/crushlinux.git
正克隆到 'crushlinux'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Unpacking objects: 100% (3/3), done.
?設(shè)置發(fā)郵件功能
修改配置文件
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
517 gitlab_rails['smtp_enable'] = true518 gitlab_rails['smtp_address'] = "smtp.163.com"519 gitlab_rails['smtp_port'] = 25520 gitlab_rails['smtp_user_name'] = "crushlinux@163.com"521 gitlab_rails['smtp_password'] = "123456"522 gitlab_rails['smtp_domain'] = "163.com"523 gitlab_rails['smtp_authentication'] = "login"524 gitlab_rails['smtp_enable_starttls_auto'] = true
#修改gitlab配置的發(fā)信人53 gitlab_rails['gitlab_email_from'] = 'crushlinux@163.com'
677 user['git_user_email'] = "crushlinux@163.com"
?重新加載配置并重新啟動(dòng)服務(wù)
[root@gitlab ~]# gitlab-ctl reconfigure
[root@gitlab ~]# gitlab-ctl restart