企業級GitLab在Docker部署使用

包子wxl發表於2023-02-15

一、部署gitlab

這裡使用的是Centos8,安裝Docker環境 ,這裡不說了,參考:https://www.cnblogs.com/wei325/p/15139701.html

gitlab有ce版和ee版,ce版為免費版本;ee版為企業版本,需要收費;企業使用ce版足夠了,這裡用ce版。

1)拉取Gitlab映象

docker pull gitlab/gitlab-ce

 

 

2)啟動Docker

  先建3個目錄用於把gitlab的檔案掛載出來

#安裝程式目錄
mkdir -p /home/gitlab/etc
#資料目錄
mkdir -p /home/gitlab/opt
#日誌目錄
mkdir -p /home/gitlab/log

啟動docker

docker run \
 -itd  \
 -p 8180:80 \
 -p 8122:22 \
 -v /home/gitlab/etc:/etc/gitlab  \
 -v /home/gitlab/log:/var/log/gitlab \
 -v /home/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 gitlab/gitlab-ce

 

 

 8180埠:gitlab管理頁面埠

 8122埠:SSH埠,拉程式碼時的埠

    -v xxx:把Docker裡面的目錄對映到本機上

檢視啟動的gitlab

 

 3)修改配置

docker安裝gitlab,建立專案時,預設專案URL訪問地址顯示的是容器主機地址(容器id),所以我們需要修改為一個固定可以外部訪問的地址及宿主機地址,這樣才可以進行pull/push程式碼

 

vi /home/gitlab/etc/gitlab.rb

# 取消external_url註釋,地址為宿主機地址,不需要設定埠
external_url 'http://1.15.63.120'

#ssh主機ip
gitlab_rails['gitlab_ssh_host'] = '1.15.63.120'
#ssh連線埠
gitlab_rails['gitlab_shell_ssh_port'] =8122

# 過載服務
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart

 

 4)修改root密碼

啟動docker後,gitlab已經能訪問了,但還沒有設定密碼

# 進入容器內部
docker exec -it gitlab /bin/bash
# 進入控制檯
gitlab-rails console -e production
# 查詢id為1的使用者,id為1的使用者是超級管理員
user = User.where(id:1).first
# 修改密碼為root123456
user.password='root123456'
# 儲存
user.save!
# 退出
exit

 

 

 設定完再去登入,就能登入成功了!

 

 

 5)伺服器卡頓問題解決

這裡用的是騰訊雲伺服器,2核4G,因為gitlab會用比較多的記憶體和cpu,這個配置裝了後伺服器變得卡頓,解決辦法。

1、建立swap分割槽

#檢視swap分割槽情況,如果看到沒有東西就是沒有swap分割槽 
cat /proc/swaps
#建立swap分割槽,注意:建立swap大小為bs*count=4294971392(4G),/data/swap目錄若無則找/mnt/swap
dd if=/dev/zero of=/data/swap bs=512 count=8388616
#把上檔案的檔案做成swap分割槽
mkswap /data/swap
#cat /proc/sys/vm/swappiness,如果不是60,則設定
sysctl -w vm.swappiness=60
#啟用swap分割槽
swapon /data/swap
echo “/data/swap swap swap defaults 0 0” >> /etc/fstab
#再次檢視swap分割槽
cat /proc/swaps

 

 

2、修改配置把程式資料變少

在掛載出來的本機檔案上改,目錄為/home/gitlab/etc/gitlab.rb,修改完重啟容器生效

vi /home/gitlab/etc/gitlab.rb
#把下面3個取消註釋,工作程式減少,最低為2
puma['worker_processes'] = 2
puma['min_threads'] = 2
puma['max_threads'] = 2

# 過載服務
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl reconfigure
[root@vanje-dev01 ~]# docker exec -t gitlab gitlab-ctl restart

 

做完這些,伺服器佔用資源就降下來了,也不會卡頓了。

二、使用gitlab

1)設定關閉自動建立賬號功能

gitlab預設是開放註冊賬號功能的,在企業裡面使用是不允許的,使用者的賬號是透過管理員建立出來的

 

管理員登入進後臺

 

 

 

 2)建立專案

 

 

 

 

 

 

 3)建立使用者,組群,給專案許可權

 

 

把使用者test加入到Test.Demo的專案裡面

 

 

 

 

 成功把使用者加了進來

 

 

GitLab使用者許可權管理:

GitLab使用者在組中有五種許可權:Guest、Reporter、Developer、Maintainer、Owner

1.Guest:可以建立issue、發表評論、不能讀寫版本庫

2.Reporter:可以克隆程式碼,不能提交,QA、PM可以賦予這個許可權

3.Developer:可以克隆程式碼、開發、提交、push、研發人員可以賦予這個許可權

4.Maintainer:可以建立專案、新增 tag 、保護分支、新增專案成員、編輯專案、核心研發負責人可以賦予這個許可權

5.Owner:可以設定專案的訪問許可權-Visibility Level、刪除專案、遷移專案、管理組成員、專案經理,部門經理可以賦予這個許可權

三、Git拉取和提交GitLab程式碼

 1)安裝git客戶端

官網地址:https://git-scm.com/downloads/

下載後,一直下一步安裝即可。安裝完成後,桌面滑鼠右鍵能看到如下圖的兩個選單

 

 

 2)git生成SSH Key

git客戶端要連線倉庫,就要先生成ssh key,ssh key有公鑰和私鑰,生成後把公鑰填到git站點上,現在生成ssh key

點選Git Bash Here

2.1設定使用者名稱

git config --global user.name 'test'

test為自己的使用者名稱,可以隨便填,注意提交記錄的時候會顯示這個使用者名稱,所以一般填員工的姓名好辨認誰提交了程式碼

 

 2.2設定郵箱

git config --global user.email 'test@qq.com'

這個郵箱也是可以隨便填,一般填員公在公司的郵箱

上兩步生成的資訊會在C:\Users\賬號 下生成.gitconfig配置檔案,特別注意此檔案不能刪除,此檔案記錄了賬號和郵箱。

 

 2.3生成ssh key

ssh-keygen -t rsa -C “test@qq.com”

填剛才的郵箱,輸入後一直回車即可

生成的ssh key資訊儲存在 C:\Users\賬號下的.ssh資料夾裡

 

 3)把生成的公鑰填到gitlab

 git客戶端要和gitlab連線,需要把公鑰裡面的內容填到gitlab上

回到gitlab,每個員工都會有獨立的ssh key,這裡我登入test賬號,表示把本機的git和test賬號關聯

 

 

 

 4)拉取專案和提交檔案

4.1克隆專案

找到專案的ssh地址,也可以透過http地址

 

 

 

 在本機上建一個資料夾放拉取的專案,在資料夾的路徑裡開啟 Git Bash 

 

git clone ssh地址

 

 第一次拉取時會報一個無法驗證主機真實性,輸入yes,然後會在 ssh key的資料夾下的kenown_hosts裡面生成gitlab資訊,下次就不會詢問了。

 

 克隆完成後,可以看到專案已經被拉下來了,因為是一個空專案,所以還沒有東西,只有一份描述文件

 

 4.2提交檔案

我們新增加一個檔案 abc.txt

 

 現在的檔案是在工作區,然後把檔案add到暫存區

#把檔案新增到暫存區
git add *
#檢視檔案變化狀態
git status

 

 4.3提交檔案到本地倉庫

#提交修改到本地倉庫 
git commit -m '提交一個文字文件'

4.4把本地倉庫同步到遠端倉庫

因為這裡是一個main分支,developer不能推送到main分支,所以這裡給一下maintainer許可權給test使用者。正常企業裡面開發,開發人員只有開發分支(dev),

測試分支(test)的許可權,main分支只能看,不能提交程式碼的,因為main分支要保持著隨時能釋出,不能籤提交程式碼,要由專案負責人從測試分支(test)合併 程式碼到main分支。

 

 推送程式碼

git push

 

 

這裡把本地倉庫同步到遠端倉庫,到遠端倉庫看一下就能看到提交記錄了

 

 如果想拉取最新的程式碼,則用git pull

 到這裡gitlab部署和使用就完成了,git如果命令列方式覺得麻煩,則可以用小烏龜git的介面視覺化操作

小烏龜git下載地址為:https://tortoisegit.org/download

其餘的開發IDE也都會自帶有git外掛,這個就不多說啦。

相關文章