gitlab私有倉庫搭建 & 代碼拉取上傳


1.什么是gitlab

1.Git是一種版本控制系統,是一種工具,用於代碼的存儲和版本控制。

2.GitHub是一個基於Git實現的在線代碼倉庫,是目前全球最大的代碼托管平台,可以幫助程序員之間互相交流和學習。

3.GitLab是一個基於Git實現的在線代碼倉庫軟件,你可以用GitLab自己搭建一個類似於GitHub一樣的倉庫,
但是GitLab有完善的管理界面和權限控制,一般用於在企業、學校等內部網絡搭建Git私服。

4.GitHub和GiLlab兩個都是基於Web的Git遠程倉庫,它們都提供了分享開源項目的平台,
為開發團隊提供了存儲、分享、發布和合作開發項目的中心化雲存儲的場所。從代碼的私有性上來看,GitLab 是一個更好的選擇。
但是對於開源項目而言,GitHub依然是代碼托管的首選。

2.上傳包

# 安裝包可參考清華源或阿里源下載:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/
[root@git ~]# rz gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

# 官網:https://about.gitlab.com/

安裝環境:
1、  CentOS 6或者7
2、  2G內存(實驗)生產(至少4G)
3、  安裝包:gitlab-ce-10.2.2-ce
4、  禁用防火牆,關閉selinux

3.安裝包

#使用rpm安裝,缺少依賴
[root@git ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm 
warning: gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm: Header V4 RSA/SHA1 Signature, key ID f27eab47: NOKEY
error: Failed dependencies:
	policycoreutils-python is needed by gitlab-ce-10.2.2-ce.0.el7.x86_64

#安裝依賴
[root@git ~]# yum install -y policycoreutils-python

#再次安裝
[root@git ~]# rpm -ivh gitlab-ce-10.2.2-ce.0.el7.x86_64.rpm

4.配置gitlab

[root@git ~]# vim /etc/gitlab/gitlab.rb
external_url 'http://10.0.0.80'

5.重新生成

#修改配置文件以后重新生成
[root@git ~]# gitlab-ctl reconfigure


/var/opt/gitlab/	         # 配置文件
/etc/gitlab/gitlab.rb		 # 配置文件地址
/opt/gitlab/                    # gitlab的程序安裝目錄
/var/opt/gitlab                 # gitlab目錄數據目錄
/var/opt/gitlab/git-dfata       # 存放倉庫數據
gitlab-ctl status               # 查看目前gitlab所有服務運維狀態
gitlab-ctl stop                 # 停止gitlab服務
gitlab-ctl stop nginx           # 單獨停止某個服務
gitlab-ctl tail                 # 查看所有服務的日志

6.gitlab組成

[root@git ~]# gitlab-ctl status
run: gitaly: (pid 9873) 137s; run: log: (pid 9529) 207s
run: gitlab-monitor: (pid 9889) 136s; run: log: (pid 9630) 195s
run: gitlab-workhorse: (pid 9862) 137s; run: log: (pid 9483) 221s       #輕量級的反向代理服務器
run: logrotate: (pid 9513) 213s; run: log: (pid 9512) 213s		#日志管理工具
run: nginx: (pid 9496) 219s; run: log: (pid 9495) 219s			#web服務,web頁面
run: node-exporter: (pid 9581) 201s; run: log: (pid 9580) 201s	
run: postgres-exporter: (pid 9908) 135s; run: log: (pid 9725) 176s
run: postgresql: (pid 9263) 285s; run: log: (pid 9262) 285s		#數據庫
run: prometheus: (pid 9897) 136s; run: log: (pid 9695) 182s		#監控
run: redis: (pid 9203) 291s; run: log: (pid 9202) 291s			#緩存
run: redis-exporter: (pid 9647) 188s; run: log: (pid 9646) 188s
run: sidekiq: (pid 9467) 227s; run: log: (pid 9466) 227s		#后台的任務隊列(異步執行)
run: unicorn: (pid 9429) 233s; run: log: (pid 9428) 233s		#動態web服務

7.常用命令

#查看gitlab狀態
[root@git ~]# gitlab-ctl status

#啟動gitlab的服務
[root@git ~]# gitlab-ctl start nginx

#停止gitlab的服務
[root@git ~]# gitlab-ctl stop nginx

#查看服務日志
[root@git ~]# gitlab-ctl tail nginx

8.瀏覽器訪問

#訪問 http://10.0.0.80
先修改默認密碼:12345678

#登錄
默認的用戶名:root   密碼:12345678

二、gitlab使用

1.外觀設置

在登錄界面增加自定義圖片及文字

2.關閉注冊接口

默認登錄界面可用戶自行注冊並實現登錄,但在公司中需要禁止用戶自行注冊,注冊功能需經審批流程通過放可。所以在此將登錄界面中的注冊功能對外關閉。

3.漢化版配置

1、下載漢化補丁 
git clone https://gitlab.com/xhang/gitlab.git

2、查看全部分支版本 
git branch -a

3、對比版本、生成補丁包 
git diff remotes/origin/10-2-stable remotes/origin/10-2-stable-zh > ../ 10.2.2-zh.diff

4、停止服務器 
gitlab-ctl stop

5、打補丁 
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /tmp/10.2.2-zh.diff

6、啟動和重新配置 
gitlab-ctl start gitlab-ctl reconfigure

4.添加用戶組


5.添加用戶




6.把用戶添加到用戶組


7.創建項目

注意:默認創建的項目,只能對創建用戶所在組用戶有權限操作。如需其他普通用戶對項目進行拉取,需要將其他普通
用戶的組加入到項目中。如下圖中,使用普通用戶登錄也可查看對應項目



8.推送和拉取項目

1)移除github的倉庫

[root@git git_data]# git remote remove origin
[root@git git_data]# git remote

2)添加gitlab的倉庫

[root@git git_data]# git remote add origin git@10.0.0.80:dev/git_data.git
[root@git git_data]# git remote
origin
# 查看當前分支的遠端倉庫地址
[root@git git_data]# git remote -v

3)推送代碼

#將公鑰配置到gitlab倉庫


[root@git git_data]# git push -u origin master
Branch master set up to track remote branch master from origin.
Everything up-to-date

4)頁面查看

5)克隆代碼

[root@git git_data]# cd /tmp/
#克隆代碼
[root@git tmp]# git clone git@10.0.0.80:dev/git_data.git
Cloning into 'git_data'...
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 31 (delta 2), reused 0 (delta 0)
Receiving objects: 100% (31/31), done.
Resolving deltas: 100% (2/2), done.
#查看
[root@git tmp]# ll
total 0
drwx------ 2 git  git  20 Sep 22 01:00 gitaly-ruby831479196
drwxr-xr-x 3 root root 59 Sep 22 02:10 git_data

6)拉取代碼

#創建倉庫
[root@git opt]# mkdir git_data
[root@git opt]# cd git_data/

#初始化倉庫
[root@git git_data]# git init
Initialized empty Git repository in /opt/git_data/.git/

#拉取代碼
[root@git git_data]# git pull git@10.0.0.80:dev/git_data.git
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (19/19), done.
remote: Total 31 (delta 2), reused 0 (delta 0)
Unpacking objects: 100% (31/31), done.
From 10.0.0.80:dev/git_data
 * branch            HEAD       -> FETCH_HEAD
 
#查看
[root@git git_data]# ll
total 8
-rw-r--r-- 1 root root  4 Sep 22 02:13 3
-rw-r--r-- 1 root root 12 Sep 22 02:13 master
-rw-r--r-- 1 root root  0 Sep 22 02:13 test_gihub

9.設置保護主分支

在實際中,一般不允許開發人員對分支進行合並到主分支,只能使用分支提交到gitlab中,再gitlab中進行申請
分支合並到主分支,交由管理員用戶審批。
下面將實現做了分支保護之后各用戶將代碼上傳到不同分支情況
結果:

  • 普通用戶無法將master分支中的代碼進行上傳
  • 普通用戶只能使用其他分支對代碼進行上傳
  • 普通用戶如需將代碼上傳到主分支,只能使用普通分支對代碼進行上傳,再在頁面中申請進行分支合並主分支
  • 管理員用戶可以對主分支代碼進行上上傳和合並操作
  • 使用普通用戶上傳代碼到master分支
1.找一台新機器
2.使用新機器生成密鑰對
3.將密鑰對使用普通用戶記錄到gitlab
4.克隆代碼
5.修改代碼
[root@zabbix git_data]# echo 12312123123 > haoda
6.設置全局用戶
[root@zabbix git_data]# git config --global user.email "123@qq.com"
[root@zabbix git_data]# git config --global user.name "haoda"
# 此操作是將遠端代碼庫命名為origin,后面直接調用origin就可使用
[root@zabbix git_data]# git remote add origin git@10.0.0.80:dev/git_data.git
[root@zabbix git_data]# git config --list
7.提交代碼到遠程倉庫
[root@zabbix git_data]# git add haoda
[root@zabbix git_data]# git commit -m "使用普通用戶提交到master分支"
[root@zabbix git_data]# git push -u origin master
8.查看倉庫
查看結果:普通用戶直接將代碼提交到了master主分支,不安全,於是需要在管理員用戶中進行下面圖片中的操作

  • 分支保護



  • 再次使用普通用戶將代碼提交到master分支

1.再次修改代碼
[root@zabbix git_data]# echo 123123123 > haoda3
2.提交代碼
[root@zabbix git_data]# git add haoda3
[root@zabbix git_data]# git commit -m "配置完分支保護使用普通用戶提交代碼"
[root@zabbix git_data]# git push -u origin master
 Counting objects: 4, done.
 Compressing objects: 100% (2/2), done.
 Writing objects: 100% (3/3), 319 bytes | 0 bytes/s, done.
 Total 3 (delta 1), reused 0 (delta 0)
 remote: GitLab: You are not allowed to push code to protected branches on
this project.
 To git@10.0.0.80:dev/git_data.git
  ! [remote rejected] master -> master (pre-receive hook declined)
 error: failed to push some refs to 'git@10.0.0.80:dev/git_data.git'
3.提交代碼被拒絕,沒被允許
  • 使用管理員用戶將代碼提交至master分支
1.先拉取代碼(修改代碼前,習慣性先拉取新代碼在進行修改)
[root@git git_data]# git pull git@10.0.0.80:dev/git_data.git
2.修改代碼
[root@git git_data]# echo 123456 > haoda2
3.推送代碼到遠程倉庫
 [root@git git_data]# git add haoda2
 [root@git git_data]# git commit -m "使用管理用戶推送代碼帶master分支"
 [root@git git_data]# git remote
 origin
 [root@git git_data]# git push -u origin master
4.使用管理用戶提交是沒有問題的
  • 使用普通用戶向普通用戶提交代碼
1.創建一個普通分支
[root@zabbix git_data]# git branch test
2.切換到普通分支
[root@zabbix git_data]# git checkout test
3.再次修改代碼
[root@zabbix git_data]# echo 12312312312 >> haoda3
4.提交代碼到新分支
[root@zabbix git_data]# git add haoda3
 [root@zabbix git_data]# git commit -m "使用普通用戶向普通分支提交代碼"
 [test f8bd225] 使用普通用戶向普通分支提交代碼
  1 file changed, 1 insertion(+)
 [root@zabbix git_data]# git push -u origin test
5.查看提交的代碼
頁面結果:提交成功

下面將實現普通用戶代碼申請合並主分支,一般第一次會直接在此處顯示,如果未找到,可以參考圖二

  • 圖二:


  • 使用管理員用戶登錄查看合並請求


  • 查看合並成功

10.git-gui的使用

專門為開發人員准備

0. 安裝:傻瓜式安裝,直接使用工具一直下一步就行
1.鼠標右鍵--> Git bash Here
2.配置全局變量,指定用戶和郵箱

windows密鑰對生成

1.針對開發人員操作,把公鑰加入gitlab,當然是普通用戶的gitlab
2.鼠標右鍵--> Git Gui Here

選擇克隆


  • 拉取后查看文件
  • 創建一個文件
1.使用頁面上傳代碼
Rescan #搜索有更新的代碼
Stage Changed #上傳到暫存區
Sign Off #提交到本地倉庫前添加的注釋
Commit #提交到本地倉庫
Push #提交到遠程倉庫
注意:因為之前已經設置了分支保護,普通用戶無法將代碼上傳到master分支中,只能創建新的分支,然后進行上傳


  • 報錯,因為普通用戶無法向master分支提交代碼

  • 創建新的分支

  • 再次提交,先切換至其他分支

  • 頁面進行合並

11.gitlab備份

  • 1.備份
對gitlab進行備份將會創建一個包含所有庫和附件的歸檔文件。對備份的恢復只能恢復到與備份時的gitlab相同的版本。將gitlab遷移到另一台服務器上的最佳方法就是通過備份和還原。
gitlab提供了一個簡單的命令行來備份整個gitlab,並且能靈活的滿足需求。
備份文件將保存在配置文件中定義的backup_path中,文件名為TIMESTAMP_gitlab_backup.tar,TIMESTAMP為備份時的時間戳。TIMESTAMP的格式為:EPOCH_YYYY_MM_DD_Gitlab-version。
如果自定義備份目錄需要賦予git權限。

1) 配置gitlab
[root@git git_data]# vim /etc/gitlab/gitlab.rb
#開啟備份
gitlab_rails['manage_backup_path'] = true
#備份文件的目錄
gitlab_rails['backup_path'] = "/backup/gitlub"
#備份文件的權限
gitlab_rails['backup_archive_permissions'] = 0644
#備份文件保留的時間(單位是秒)
gitlab_rails['backup_keep_time'] = 604800        備份保留的時間(以秒為單位,這個是七天默認值

2)創建備份目錄
[root@git git_data]# mkdir /backup/gitlub -p
#授權
[root@git git_data]# chown -R git.git /backup/gitlub/

3)gitlab重新生成
[root@git git_data]# gitlab-ctl reconfigure

4)手動備份
#先拉取最新代碼
[root@git git_data]# git pull git@10.0.0.80:dev/git_data.git
#備份
[root@git git_data]# gitlab-rake gitlab:backup:create

5)檢查備份
[root@git git_data]# ll /backup/gitlub/
total 512
-rw-r--r-- 1 git git 522240 Sep 23 00:49
1600793349_2020_09_23_10.2.2_gitlab_backup.tar

6) 自動備份
#寫腳本結合定時任務

2.誤刪除數據

注意:gitlab只能恢復相同版本的代碼

1) 代碼拉取
[root@git git_data]# git pull git@10.0.0.80:dev/git_data.git

2) 誤刪除代碼
[root@git git_data]# rm -rf ./*
[root@git git_data]# git add -A
[root@git git_data]# git commit -m "故意誤刪除數據"
[root@git git_data]# git push -u origin master

3) 恢復數據
- 停止相關服務
[root@git git_data]# gitlab-ctl stop unicorn
ok: down: unicorn: 0s, normally up
[root@git git_data]# gitlab-ctl stop sidekiq
ok: down: sidekiq: 0s, normally up
[root@git git_data]# gitlab-ctl status

4) 使用備份數據恢復數據
#查看備份的文件
[root@git git_data]# ll /backup/gitlub/
total 1024
-rw-r--r-- 1 git git 522240 Sep 23 00:49
1600793349_2020_09_23_10.2.2_gitlab_backup.tar
-rw-r--r-- 1 git git 522240 Sep 23 00:50
1600793421_2020_09_23_10.2.2_gitlab_backup.tar
[root@git git_data]# gitlab-rake gitlab:backup:restore
BACKUP=1600793421_2020_09_23_10.2.2

5)啟動服務
[root@git git_data]# gitlab-ctl start sidekiq
ok: run: sidekiq: (pid 33707) 0s
[root@git git_data]# gitlab-ctl start unicorn
ok: run: unicorn: (pid 33724) 1s
[root@git git_data]# gitlab-ctl status

6) 查看恢復數據
直接在頁面中進行查看


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM