一、部署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外掛,這個就不多說啦。