Gitlab 仓库搭建(详细版)
目錄
前言
一、gitlab 介紹
二、git和svn 的區別
1、?集中式vs分布式
2、?版本庫與工作區
3. 全局版本號和全球版本號
4、部分檢出和全局檢出
5、更新和提交
三、Git和svn的優缺點比較
1、SVN優缺點
2、Git優缺點
四、git、gitlab、GitHub的簡單區別
五、Gitlab 搭建
1、gitlab 安裝
方法一、設置gitlab的yum源(使用清華鏡像源安裝GitLab)
方法二、腳本安裝gitlab
?方法三、清華開源軟件rpm下載
六、gitlab安裝目錄?
七、GitLab常用命令匯總
八、Gitlab訪問測試
1、Gitlab登錄
?2、配置默認訪問密碼
3、想要登錄自己創建的用戶?
九、Gitlab 圖形化界面操作?
1、Gitlab關閉自動注冊
2、Gitlab登錄免密認證?
3、Gitlab創建項目?
4、使用管理員創建用戶?
5、Gitlab 添加郵箱設置
5.1、開啟smtp功能
?5.2、驗證
6、修改登錄歡迎頁面?
十、Gitlab命令行操作?
?編輯1、命令行新建分支?
2、上傳代碼到倉庫
3、Git 命令行常用指令的使用?
3.1、提交與修改操作
十一、項目創建(測試)
1、GitLab權限
1.1、訪問權限
1.2、GitLab分支角色管理
1.3、工程權限
1.4、組權限
2、設置用戶權限?
3、數據流向圖
十二、Gitlab 數據備份?
?1、Gitlab 創建備份
1.1、手動備份
2、更改Gitlab備份目錄
3、Gitlab自動備份
定時自動備份
3.1、方法一、輸入: crontab -e 然后添加相應的任務
3.2、腳本執行gitlab 備份?
十三、Gitlab-CI/CD?
CICD是什么?
持續集成的好處是什么?
持續交付的好處是什么?
持續部署的好處是什么?
十四、總結
前言
公司代碼的管理不統一,一部分人用SVN,一部分人用Git,對于習慣了使用Linux或者Mac命令行的人來說,Git的操作更方便和快捷,和小伙伴商量了一下把整個代碼管理工具切換成了Git,GitHub如果不是開源項目的話是需要付費使用,所以選擇使用GitLab。
一、gitlab 介紹
? ? ? ?Gitlab是一個用于倉庫管理系統的開源項目,使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務。Gitlab有烏克蘭程序員DmitriyZaporozhets和ValerySizov開發,它由Ruby寫成。后來,一些部分用Go語言重寫,現今并在國內外大中型互聯網公司廣泛使用。gitlab-ce是它的社區版,gitlab-ee是企業版,是收費的。
二、git和svn 的區別
Git:?是一個開源的分布式版本控制系統,用于敏捷高效地處理任何或小或大的項目。Git 是 Linus Torvalds 為了幫助管理 Linux 內核開發而開發的一個開放源碼的版本控制軟件。
下圖就是分布式版本控制工具管理方式:
Git:是分布式版本控制系統,它沒有中央服務器,每個人的電腦就是一個完整的版本庫,這樣工作的時候就不需要聯網了,因為版本都是在自己的電腦上。既然每個人的電腦都有一個完整的版本庫,那多個人如何協作呢?比如說自己在電腦上改了文件A,其他人也在電腦上改了文件A,這時,你們兩之間只需把各自的修改推送給對方,就可以互相看到對方的修改了。
SVN:?是一個開放源代碼的版本控制系統,通過采用分支管理系統的高效管理,簡而言之就是用于多個人共同開發同一個項目,實現共享資源,實現最終集中式的管理。集中管理方式在一定程度上看到其他開發人員在干什么,而管理員也可以很輕松掌握每個人的開發權限。
下圖就是標準的集中式版本控制工具管理方式:
但是相較于其優點而言,集中式版本控制工具缺點很明顯:
服務器單點故障
容錯性差
Git 的內容完整性要優于svn:
GIT的內容存儲使用的是SHA-1哈希算法。這能確保代碼內容的完整性,確保在遇到磁盤故障和網絡問題時降低對版本庫的破壞。
一個研發隊伍的成員正常包括:需求分析、設計、美工、程序員、測試、實施、運維,每個成員在工作中都有產出物, 包括了文檔、設計代碼、程序代碼,這些都需要按項目集中進行管理的。SVN能清楚的按目錄進行分類管理, 使項目組的管理處于有序高效的狀態,SVN更適用于項目管理, Git更適用于代碼管理。
1、?集中式vs分布式
Subversion(svn)屬于集中式的版本控制系統
Git屬于分布式的版本控制系統
2、?版本庫與工作區
SVN的版本庫和工作區是分離的
Git 的版本庫和工作區如影隨形
3. 全局版本號和全球版本號
SVN的全局版本號和CVS的每個文件都獨立維護一套版本號相比,是一個非常大的進步。在看似簡單的全局版本號的背后,是Subversion提供對于事物處理的支持,每一個事物處理(即一次提交)都具有整個版本庫全局唯一的版本號。
Git的版本號則更進一步,版本號是全球唯一的。Git 對于每一次提交,通過對文件的內容或目錄的結構計算出一個SHA-1 哈希值,得到一個40位的十六進制字符串,Git將此字符串作為版本號?
4、部分檢出和全局檢出
Subversion可以將整個庫檢出到工作區,也可以將某個目錄檢出到工作區。對于要使用一個龐大、臃腫的版本庫的用戶來說,部分檢出是非常方便和實際的。
Git只能全部檢出,不支持按照目錄進行的部分檢出。
5、更新和提交
在SVN中,因為只有一個中心倉庫,所以所謂的遠程更新,也就是svn update ,通過此命令來使工作區和版本庫保持同步。如果不能連接到服務器上,基本上不可以工作。
對于git來說,別人的改動是存在于遠程倉庫上的,所以git checkout命令盡管在某些功能上和svn中的update類似(例如取倉庫特定版本的內容),但是在遠程更新這一點上,還是不同的,不屬于git checkout的功能涵蓋范圍。 Git使用git fetch和git pull來完成遠程更新任務,fetch操作只是將遠程數據庫的object拷貝到本地,然后更新remotes head的refs,git pull 的操作則是在git fetch的基礎上對當前分支外加merge操作。可離線工作。
三、Git和svn的優缺點比較
1、SVN優缺點
優點:
1、 管理方便,邏輯明確,符合一般人思維習慣。
2、 易于管理,集中式服務器更能保證安全性。
3、 代碼一致性非常高。
4、 適合開發人數不多的項目開發。
缺點:
1、 服務器壓力太大,數據庫容量暴增。
2、 如果不能連接到服務器上,基本上不可以工作,如果服務器不能連接上,就不能提交,還原,對比等等。
3、 不適合開源開發(開發人數非常非常多,但是Google app engine就是用svn的)。但是一般集中式管理的有非常明確的權限管理機制(例如分支訪問限制),可以實現分層管理,從而很好的解決開發人數眾多的問題。
2、Git優缺點
優點:?
1、適合分布式開發,強調個體。
2、公共服務器壓力和數據量都不會太大。
3、速度快、靈活。
4、任意兩個開發者之間可以很容易的解決沖突。
5、離線工作。
缺點:
1、學習周期相對而言比較長。
2、不符合常規思維。
3、代碼保密性差,一旦開發者把整個庫克隆下來就可以完全公開所有代碼和版本信息。
四、git、gitlab、GitHub的簡單區別
git 是一種基于命令的版本控制系統,全命令操作,沒有可視化界面
gitlab 是一個基于git實現的在線代碼倉庫軟件,提供web可視化管理界面,通常用于企業團隊內部協作開發
github 是一個基于git實現的在線代碼托管倉庫,亦提供可視化管理界面,同時免費賬戶和提供付費賬戶,提供開放和私有的倉庫,大部分的開源項目都選擇github作為代碼托管倉庫
其中:
Gitlab和GitHub的區別
相同點:二者都是基于web的Git倉庫,在很大程度上Gitlab是仿照GitHub來做的;
它們都提供了分享開源項目的平臺,為開發團隊提供了存儲、分享、發布
和合作開發項目的中心化云存儲的場所。
不同點:GitHub如果要使用私有倉庫,是需要付費的。Gitlab可以在上面創建私人的免費倉庫。
Gitlab讓開發團隊對他們的代碼倉庫擁有更多的控制,相比于GitHub,它有不少的特色:允許免費設置倉庫權限;允許用戶選擇分享一個project的部分代碼;允許用戶設置project的獲取權限,進一步的提升安全性;可以設置獲取到團隊整體的改進進度;通過innersourceing讓不在權限范圍內的人訪問不到該資源。從代碼私有性方面來看有時公司并不希望員工獲取到全部的代碼,這個時候Gitlab無疑是更好的選擇。但是對于開源項目而言,GitHub依然是代碼托管的首選。
五、Gitlab 搭建
1、gitlab 安裝
方法一、設置gitlab的yum源(使用清華鏡像源安裝GitLab)
gitlab-ce是它的社區版,gitlab-ee是企業版,是收費的。
在 /etc/yum.repos.d/ 下新建 gitlab-ce.repo,寫入如下內容:cd /etc/yum.repos.d/
vim gitlab-ce.repo[gitlab-ce]
name=gitlab-ce
baseurl=https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
gpgcheck=0
enabled=1yum clean all && yum makecache
安裝 GitLab
# 直接安裝最新版
yum install -y gitlab-ce
下圖表示gitlab安裝成功
# 如果要安裝指定的版本,在后面填上版本號即可
yum install -y ?gitlab-ce-×××
# 如果安裝時出現gpgkey驗證錯誤,只需在安裝時明確指明不進行gpgkey驗證
yum install gitlab-ce -y --nogpgcheck?
方法二、腳本安裝gitlab
如果執行腳本出現壞的解釋器:腳本文件保存時使用了DOS格式,用DOS2UNIX轉為UNIX格式,也可以用vim打開,用:set ff=unix轉換。
#!/bin/bash#安裝依賴
systemctl stop firewalld
setenforce 0
a=`ifconfig ens33 |grep inet |awk 'NR==1{print $2}'`yum install curl wget policycoreutils policycoreutils-python openssh-server openssh-clients postfix -y >/dev/nullsystemctl enable sshdsystemctl start sshdsed -i 's/inet_interfaces = localhost/inet_interfaces = all/g' /etc/postfix/main.cf#正式安裝gitlabcurl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | bash > /dev/nullsed -i "s/baseurl=https:\/\/packages.gitlab.com\/gitlab\/gitlab-ce\/el\/7\/\$basearch/baseurl=https:\/\/mirrors.tuna.tsinghua.edu.cn\/gitlab-ce\/yum\/el\$releasever\//g" /etc/yum.repos.d/gitlab_gitlab-ce.repoyum makecache &>/dev/nullyum install gitlab-ce -y#已經安裝完成#驗證是否安裝成功right=$(yum list installed | grep gitlab-ce)gitlab='gitlab-ce'if [[ ${right} =~ "${gitlab}" ]];thenecho "gitlab-ce已經安裝成功啦!"elseecho "gitlab-ce沒有安裝成功,請重新檢查!"exitfi
sed -i '32s/gitlab.example.com/'$a':9099/' /etc/gitlab/gitlab.rb
gitlab-ctl reconfigure > /dev/null
echo "此時訪問本地IP:9099 就可以顯示gitlab 的頁面了!"
?方法三、清華開源軟件rpm下載
?Index of /gitlab-ce/yum/el7/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror???網站地址
安裝依賴
yum install -y curl policycoreutils openssh-server openssh-clients
#啟動ssh服務&設置為開機啟動
systemctl enable sshd
systemctl start sshd
安裝Postfix
Postfix是一個郵件服務器,GitLab發送郵件需要用到
#安裝postfix
yum install -y postfix#啟動postfix并設置為開機啟動
systemctl enable postfix
systemctl start postfix
開放ssh以及http服務(80端口)
#開放ssh、http服務
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-service=http --permanent說明允許ssh服務通過成功
?說明80端口通過成功
#重載防火墻規則
firewall-cmd --reload
或者
直接關閉防火墻以及開機自關閉
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
?安裝gitlab,安裝完gitlab需要修改配置文件,并加載
vim /etc/gitlab/gitlab.rb 進入配置文件
#找到下面一行,修改ip
修改好配置文件后,要使用 gitlab-ctl reconfigure 命令重載一下配置文件,否則不生效即可啟動Gitlab。注意,啟動過程較長,需要耐心等待。
我們查看一下Gitlab的狀態,執行命令:
六、gitlab安裝目錄?
?以下是gitlab常用的默認安裝目錄
gitlab組件日志路徑:/var/log/gitlab
?
gitlab配置路徑:/etc/gitlab/ ?路徑下有gitlab.rb配置文件
?
應用代碼和組件依賴程序:/opt/gitlab
?
各個組件存儲路徑: /var/opt/gitlab/
?
倉庫默認存儲路徑 ? /var/opt/gitlab/git-data/repositories
?
版本文件備份路徑:/var/opt/gitlab/backups/
?
nginx安裝路徑:/var/opt/gitlab/nginx/
?
redis安裝路徑:/var/opt/gitlab/redis
七、GitLab常用命令匯總
#查看服務狀態
gitlab-ctl status
使用控制臺實時查看日志
# 查看所有的logs; 按 Ctrl-C 退出
gitlab-ctl tail
# 拉取/var/log/gitlab下子目錄的日志
gitlab-ctl tail gitlab-rails
# 拉取某個指定的日志文件
gitlab-ctl tail nginx/gitlab_error.log
#啟動關閉gitlab?? ?
gitlab-ctl start ? ? ?
gitlab-ctl stop ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#停止 ? ? ? ? ? ?
gitlab-ctl status ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#查看狀態
gitlab-ctl restart ? ? ? ? ? ? ? ? ? ? ? ? ? ? #重啟
gitlab-ctl reconfigure?? ??? ??? ? ? #更新配置文件
gitlab-ctl help ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#幫助
gitlab-rake gitlab:check SANITIZE=true --trace?? ?檢查gitlab
#gitlab 默認的日志文件存放在/var/log/gitlab 目錄下
gitlab-ctl tail ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?#查看所有日志
#禁止 Gitlab 開機自啟動
systemctl disable gitlab-runsvdir.service?
#啟用 Gitlab 開機自啟動
systemctl enable gitlab-runsvdir.service
八、Gitlab訪問測試
1、Gitlab登錄
打開瀏覽器輸入gitlab服務器地址,注冊用戶,如下圖
注冊用戶
例:
完成后想登錄http://192.168.111.50:9091 需要賬號和密碼登錄,注冊一個后登錄報錯誤,需要管理員賬號初始化。(密碼最少的是8位數字)
?2、配置默認訪問密碼
切換到命令運行的目錄 cd /opt/gitlab/bin/執行如下命令:gitlab-rails console -e production 進行初始化密碼
在irb(main):001:0> 后面通過 u=User.where(id:1).first 來查找與切換賬號(User.all 可以查看所有用戶)
gitlab-rails console -e production
u=User.where(id:1).first
u.password='12345678'
u.password_confirmation='12345678'
u.save!
exit出現true說明設置成功!
此時就可以用root/12345678來登錄頁面
成功登錄root用戶
3、想要登錄自己創建的用戶?
?解決方案?
需要用root賬號通過下
點擊批準
??再次登錄,即可登錄成功?
注: 覺得英文難受的可以在下圖設置成中文?
九、Gitlab 圖形化界面操作?
1、Gitlab關閉自動注冊
在企業生產環境中,我們一般由項目負責人負責創建用戶并分配權限,一般禁止員工私自注冊用戶,以防給項目開發工作帶來安全性上的風險。為了避免員工自動注冊,我們一般會禁止Gitlab的自動注冊功能。在Gitlab的主菜單上,選擇Menu——Admin,如下所示:
前提:使用root管理員賬號密碼登陸GitLab。
?之后,選擇Settings——Sign-up restrictions,點擊右邊的Expand,如下所示:
在彈出的頁面中,取消掉Sign-up enabled選項前面的勾,如下所示:?
這樣,點擊下方的Save后,就可以使得我們的配置生效了。這樣在登錄的時候,就無法實現自動注冊了。
2、Gitlab登錄免密認證?
Gitlab的登錄免密驗證,配置完成后,可以使得我們的Gitlab自動執行Git命令而無需登錄,對于腳本的編寫以及其他項目(如Jenkins)的運用這一步是必須的。
首先,在想要進行驗證的設備上執行命令:
ssh-keygen
?確認新生成的密鑰文件
完成上述配置后,可以生成本設備的公私鑰對,執行命令:
可以查看本設備的公鑰,如下所示:
我們將該公鑰復制下來,之后,我們打開Gitlab,點擊右上角的用戶圖標,在彈出的選擇框中選擇Edit Profile,然后點擊左邊的SSH Keys,如下所示:
之后在彈出的頁面中,我們將之前復制的公鑰復制到上面去,如下所示:
?然后點擊Add key,即可完成添加,添加完成后的頁面如下:
3、Gitlab創建項目?
?Gitlab上創建項目。由于新項目的創建必須依賴于一個組,因此,我們在創建項目前,先創建組。
進入Gitlab主頁面后,點擊Overview中的Groups選項,然后點擊右邊的New group,選擇新創建一個組,如下所示:
輸入組的名稱和描述,組的URL會隨著組名稱的輸入而自動出現,在組的權限處,我們選擇Private,并取消掉下方允許用戶訪問的請求,配置完成后如下所示:
?接下來,我們點擊最下方的Create Group,就可以完成組的創建了,如下所示:?
?接下來,我們來創建項目。項目的創建與組的創建過程類似,都是輸入項目名稱,選擇組的名稱,項目描述以及權限等,配置好的項目如下所示:
配置完成后,就可以創建項目了。
創建項目后,Gitlab會自動創建一個README.md的文件,我們可以在線對該文件機型編輯,如下所示:
4、使用管理員創建用戶?
前提:使用root管理員賬號密碼登陸GitLab
初始密碼由管理員設置,
當用戶第一次登錄時,由用戶進行修改密碼
5、Gitlab 添加郵箱設置
?郵箱是企業進行工作中的通知,交互必不可少的部分,gitlab同樣支持郵箱的配置,方便對一些操作有郵件的提醒,以QQ郵箱為例,進行gitlab郵箱的添加。(郵件授權碼)
5.1、開啟smtp功能
修改gitlab配置
vim /etc/gitlab/gitlab.rb
#更新配置文件
gitlab-ctl reconfigure
gitlab-ctl restart
?5.2、驗證
Notify.test_email('收件人郵箱', '郵件標題', '郵件正文').deliver_now
Notify.test_email('229xxxx@qq.com', 'GitLab email', 'Hellow world').deliver_now
執行 gitlab-rails console進入控制臺交互界面,
然后在控制臺提示符后輸入下面內容發送一封測試郵件,測試完成后exit()退出。
?
6、修改登錄歡迎頁面?
看下圖操作即可
設置完的效果圖:
十、Gitlab命令行操作?
第一次使用該項目地址的話,需要創建新版本庫,首先從主項目上fork一個自己的項目。
從自己項目上獲取clone(克隆)鏈接地址。在想要存放的目錄下執行
git clone http://192.168.111.50:9091/ceshi/git-test.git
?查看日志
1、命令行新建分支?
查看當前所在的分支
git branch 查看分支
?
git branch deve 創建分支,deve為新的分支名,可改
git checkout dave 進入到剛剛創建的分支
切換分支
查看狀態(跟源文件有出入的文件)
git status
git push -u origin dave 提交到新分支中
添加分支成功
?在切換回main分支
2、上傳代碼到倉庫
?首次使用Git的話,需要設置全局的用戶名和郵箱設置,如下圖所示:
在命令行或終端中使用下面的命令可以設置git自己的名字和電子郵件。這是因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "admin@example.com"
在命令行或終端中使用下面的命令可以設置git自己的名字和電子郵件。
這是因為Git是分布式版本控制系統,所以,每個機器都必須自報家門:你的名字和Email地址。
git config --global user.name "root"
git config --global user.email "admin@example.com"
# 查看配置git config --list
git init 初始化git
git remote add origin http://192.168.111.50:9091/ceshi/git-test.git 將本地git和服務器上的連接
git add 1.java 添加要提交的本地項目 (.代表所有 可用文件名代替. 上傳某個文件)
git commit -m "測試代碼" 提交到本地倉庫
git push -u origin main 將項目推送到gitlab端出現報錯:fatal: 遠程 origin 已經存在
解決:#刪除遠程配置 git remote rm origin
#重新添加 git remote add origin http://192.168.58.10:9091/ceshi/git-test.git
這樣就可以了,刷新gitlab頁面就可以看到上傳的項目了
?
3、Git 命令行常用指令的使用?
git status ?? ?#上次提交后是否對文件再做了修改項目
git add . ?? ??? ?#添加所有的變動
git checkout -b 文件夾名稱 ?? ??? ?#創建本地分支并切換分支 git checkout -b pr/ffr
git commit -m “描述”?? ??? ??? ? #提交修改 git commit -m “修改什么”
git merge origin/develop “本地分支” ?? ??? ?#合并origin/develop上別人所做的修改到自己的本地分支 git merge origin/develop pr/ffr
git push origin “本地分支” #推送本地分支到遠程,并建立聯系 git push origin pr/ffr
git rebase -i 編號 #合并多次提交,將前幾次的提交合并為一次
git checkout 分支名 #切換分支 git checkout pr/FFR-color git cherckout develop
git pull #更新當前分支的狀態
git branch #列出本地分支
git branch -a #列出本地分支與遠程分支
git branch -D 分支名 #刪除分支(目前僅用于刪除本地分支)
git remote -v #可以查看遠程倉庫信息
git branch 分支名 #僅僅創建 一個新分支,并不會自動切換到新分支中去
git rebase --abort #退出git rebase
git reset 提交編號 #git rebase -i 提交編號,之后出現錯誤,可以回退到之前未合并時的日志狀態
git commit --amend -m “描述” #修改上一次的提交的描述
git stash #暫存上一次的修改,準備切換到其他的分支
git stash pop #還原上一次的修改,將暫存的修改加入到新的分支
3.1、提交與修改操作
|
命令 |
說明 |
|
git add |
添加文件到暫存區 |
|
git status |
查看倉庫當前的狀態,顯示有變更的文件。 |
|
git diff |
比較文件的不同,即暫存區和工作區的差異。 |
|
git commit |
提交暫存區到本地倉庫 |
|
git reset |
回退版本 |
|
git rm |
刪除工作區文件 |
|
git mv |
移動或重命名工作區文件 |
十一、項目創建(測試)
1、GitLab權限
1.1、訪問權限
訪問權限是在建立項目時就需要選定的,主要用于決定哪些人可以訪問此項目:
Gitlab中的組對項目有三種訪問權限
|
權限名稱 |
權限類型 |
權限說明 |
|
私有 |
Private |
只有屬于該項目成員才有權限查看和操作項目 |
|
內部 |
Internal |
具有GitLab賬號的人員登陸后都可以克隆項目 |
|
公開 |
Public |
任何人都可以克隆 |
1.2、GitLab分支角色管理
Gitlab用戶在組中有五種權限:
|
角色名稱 |
角色類型 |
角色說明 |
|
匿名用戶 |
Guest |
訪客【只能創建問題和留言評論】 |
|
報告人 |
Reporter |
可以理解為測試員、產品經理等,一般負責提交問題等 |
|
開發人員 |
Developer |
負責項目開發 |
|
管理者 |
Master |
一般是組長,負責對Master分支進行維護 |
|
所有者 |
Owner |
一般是項目經理【擁有所有權限】 |
不同角色,擁有不同權限,下面列出Gitlab各角色權限 :
1.3、工程權限
注意:關于保護分支的設置,可以進入Settings->Protected branches進行管理?
1.4、組權限
2、設置用戶權限?
前提:使用root管理員賬號密碼登陸GitLab
選擇項目可以進行權限分配
?先設置全局每個機器都必須自報家門:你的名字和Email地址。
git clone http://192.168.111.50:9091/weilai/git-test.git 首先從主項目上fork一個自己的項目。
從自己項目上獲取clone(克隆)鏈接地址。
在想要存放的目錄下執行以liy用戶登錄
?由于main 是受保護的分支,開發者沒有權限將代碼上傳到main 分支(主干分支)中
?Main 分支受保護中(主干分支)
?所以我們切換分支,切換到deve分支中?
開發者用戶liy 編寫代碼,將代碼上傳至倉庫,將代碼上傳至分支deve
?刷新查看倉庫,查看分支有我們開發者寫的代碼
使用管理員root 用戶創建新的用戶yong?
?創建用戶后,會發送郵箱,設置密碼
?設置密碼成功
?Yong 用戶登錄成功
?切換回root用戶
?邀請用戶yong 進入項目 且為匿名用戶 guest ?只能進行訪問以及評論
?
定義全局用戶yong
用戶yong 無法克隆項目 ?用戶yong 為匿名用戶(客人),所以沒有權限下載項目
?
?可以進行分支合并,主要就是開發者編寫完代碼后,與主干分支進行合并,組成項目
??
?分支已合并?
3、數據流向圖
本文主要描述了gitlab 部分的一些操作
十二、Gitlab 數據備份?
?1、Gitlab 創建備份
1.1、手動備份
創建備份文件
使用一條命令即可創建完整的Gitlab備份。
gitlab-rake gitlab:backup:create
使用命令會在/var/opt/gitlab/backups目錄下創建一個壓縮包,這個壓縮包就是Gitlab整個的完整部分。
生成完后,/var/opt/gitlab/backups目錄
創建一個名稱類似為1655990519_2022_06_23_15.0.2_gitlab_backup.tar的壓縮包
其中
/etc/gitlab/gitlab.rb 配置文件須備份
/var/opt/gitlab/nginx/conf nginx配置文件
/etc/postfix/main.cfpostfix 郵件配置備份
2、更改Gitlab備份目錄
也可以通過/etc/gitlab/gitlab.rb配置文件來修改默認存放備份文件的目錄
修改為你想存放備份的目錄即可gitlab_rails['backup_path'] = "/home/gitlab-backup"#指定備份后數據存放的路徑、權限、時間配置
gitlab_rails['manage_backup_path'] = true 開啟備份功能
gitlab_rails['backup_path'] = "/home/gitlab-backup" 指定備份的路徑
gitlab_rails['backup_archive_permissions'] = 0644 備份文件的權限
gitlab_rails['backup_keep_time'] = 7776000 備份保留時間
修改完成之后使用下面命令重載配置文件即可.gitlab-ctl reconfigure
創建備份目錄并授權
chown -R git:git gitlab-backup
使用命令創建完整的Gitlab備份。
這個壓縮包就是gitlab 的整個完整部分
3、Gitlab自動備份
定時自動備份
實現每天凌晨2點進行一次自動備份:通過crontab使用備份命令實現,需重啟cron服務
3.1、方法一、輸入: crontab -e 然后添加相應的任務
?
#輸入命令crontab -e
crontab -e
#輸入相應的任務
0 2 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create CRON=1
注意:環境變量CRON=1的作用是如果沒有任何錯誤發生時, 抑制備份腳本的所有進度輸出#查看周期性計劃任務
crontab -l
3.2、腳本執行gitlab 備份?
#!/bin/bash
a="/home/gitlab-backup"
back="/home/git_back"
date="$(date +%Y-%m-%d)"
logfile=$back/$date.log
gitlab-rake gitlab:backup:create > /dev/null
b=`ls $a |wc -l`
if [ $b -eq 0 ];then
echo "$date.tar 備份失敗" >> $logfile
elif [ $b -gt 0 ];then
echo " $date.tar 備份成功" >> $logfile
fi
mv $a/* $back/$date.tar
?將腳本加入周期性計劃執行
十三、Gitlab-CI/CD?
擴展
Gitlab CI/CD 是一個內置在GitLab中的工具,用于通過持續方法進行軟件開發:
Continuous Integration (CI) ?持續集成
Continuous Delivery (CD) ? ? 持續交付
Continuous Deployment (CD) ? 持續部署
CICD是什么?
持續集成(Continuous Integration)、持續交付(Continuous Delivery) 、持續部署(Continuous Deployment) 的新方法,關于持續集成、持續交付、持續部署,總結如下:
1、持續集成的重點是將各個開發人員的工作集合到一個代碼倉庫中。通常,每天都要進行幾次,主要目的是盡早發現集成錯誤,使團隊更加緊密結合,更好地協作。
2、持續交付的目的是最小化部署或釋放過程中固有的摩擦。它的實現通常能夠將構建部署的每個步驟自動化,以便任何時刻能夠安全地完成代碼發布(理想情況下)。
3、持續部署是一種更高程度的自動化,無論何時對代碼進行重大更改,都會自動進行構建/部署。
持續集成的好處是什么?
?持續集成可以使問題盡早暴露,從而也降低了解決問題的難度,持續集成無法消除bug,但卻能大大降低修復的難度和時間。
持續交付的好處是什么?
持續交付的好處在于快速獲取用戶反饋;適應市場變化和商業策略的變化。開發團隊保證每次提交的修改都是可上線的修改,那么決定何時上線,上線哪部分功能則完全由產品業務團隊決定。
雖然持續交付有顯著的優點,但也有不成立的時候,比如對于嵌入式系統的開發,往往需要軟硬件的配合。
持續部署的好處是什么?
持續部署的目標是通過減少批量工作的大小,并加快團隊工作的節奏,幫助開發團隊在其開發流程中消除浪費。這使團隊能夠一直處于一種可持續的平穩流狀態, 讓團隊更容易去創新、試驗,并達到可持續的生產率。
十四、總結
GitLab 是一個用于倉庫管理系統的開源項目。使用Git作為代碼管理工具,并在此基礎上搭建起來的web服務。
可通過Web界面進行訪問公開的或者私人項目。它擁有與Github類似的功能,能夠瀏覽源代碼,管理缺陷和注釋。可以管理團隊對倉庫的訪問,它非常易于瀏覽提交過的版本并提供一個文件歷史庫。團隊成員可以利用內置的簡單聊天程序(Wall)進行交流。它還提供一個代碼片段收集功能可以輕松實現代碼復用。
?
總結
以上是生活随笔為你收集整理的Gitlab 仓库搭建(详细版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【TV】三星曲面电视技术解析
- 下一篇: Linux11-权限的介绍 rwx详解