參考: gitlab 安裝和配置
gitlab下載地址: https://mirror.tuna.tsinghua.edu.cn/gitlab-ce/
官方教程: https://about.gitlab.com/downloads/
1. gitlab 安裝
實驗環境: ubuntu 14.04.
1.1、下載CE版 gitlab 安裝包
注意要下載ubuntu對應版本的gitlab, 如 trusty(ubntu 14.04的代號),bionic(ubntu 18.04代號),xenial(ubntu 16.04代號).
官網下載不下來,用下面的源下載.
wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/trusty/main/g/gitlab-ce/gitlab-ce_7.14.3-ce.1_amd64.deb
注意: 第一次實驗的是安裝gitlab-ce_7.14.3-ce.1_amd64.deb ,第二次實驗安裝了 gitlab-ce_11.0.0-ce.0_amd64.deb.安裝過程一模一樣,照樣可以跑起來.
1.2、安裝依賴
1.3、配置postfix郵箱
1.4、安裝gitlab安裝包
dpkg -i gitlab-ce_7.14.3-ce.1_amd64.deb
1.5、配置gitlab
1.6.查看狀態
登錄不上可能是防火牆的問題.
第一次啟動的時候,需要初始化大量的東西,經常會出現502錯誤,通常是由於內存不足的原因導致,所以需要准備好足夠的內存。官方推薦生產環境中使用2G內存,2核CPU。虛擬機中測試1GB內存基本就可以了。
2. 漢化包的安裝
2.1 第一種漢化方法(沒成功尷尬)
2.2 第二種漢化方法(成功耶)
參考: https://blog.whsir.com/post-3081.html
Gitlab中文社區版地址:https://gitlab.com/xhang/gitlab
1、克隆版本庫
cd /usr/local/src/
git clone https://gitlab.com/xhang/gitlab.git
2、獲取當前Gitlab版本
gitlab_version=$(cat /opt/gitlab/embedded/service/gitlab-rails/VERSION)
3、比較漢化標簽和原標簽,導出patch用的diff文件
cd /usr/local/src/gitlab
git diff v${gitlab_version} v${gitlab_version}-zh > ../${gitlab_version}-zh.diff
4、先停止gitlab
gitlab-ctl stop
5、導入漢化補丁
patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < ../11.0.0-zh.diff
PS:如果出現類似以下內容,則按住回車,一直跳過就行了
can't find file to patch at input line 5 Perhaps you used the wrong -p or --strip option? The text leading up to this was: -------------------------- |diff --git a/app/assets/javascripts/awards_handler.js b/app/assets/javascripts/awards_handler.js |index eb0f06e..73e4833 100644 |--- a/app/assets/javascripts/awards_handler.js |+++ b/app/assets/javascripts/awards_handler.js -------------------------- File to patch:
6、然后啟動gitlab
3. gitlab 的使用
3.1 關閉注冊功能
在gitlab的首頁點擊, 配置GitLab ---->設置---->Sign-up restrictions 里面去設置.
3.2 gitlab組件和目錄
組件

root@A1-Back:/# gitlab-ctl status run: alertmanager: (pid 30583) 1901863s; run: log: (pid 11484) 1989543s run: gitaly: (pid 30600) 1901856s; run: log: (pid 11464) 1989544s run: gitlab-monitor: (pid 30612) 1901856s; run: log: (pid 11439) 1989544s run: gitlab-workhorse: (pid 30625) 1901855s; run: log: (pid 11446) 1989544s run: logrotate: (pid 31410) 1011s; run: log: (pid 11396) 1989545s run: nginx: (pid 30641) 1901855s; run: log: (pid 11395) 1989545s run: node-exporter: (pid 30643) 1901855s; run: log: (pid 11465) 1989544s run: postgres-exporter: (pid 30729) 1901854s; run: log: (pid 11575) 1989542s run: postgresql: (pid 30735) 1901854s; run: log: (pid 11377) 1989545s run: prometheus: (pid 30743) 1901853s; run: log: (pid 11456) 1989544s run: redis: (pid 30754) 1901853s; run: log: (pid 11376) 1989545s run: redis-exporter: (pid 30758) 1901852s; run: log: (pid 11435) 1989544s run: sidekiq: (pid 30774) 1901852s; run: log: (pid 11379) 1989545s run: unicorn: (pid 30781) 1901852s; run: log: (pid 11378) 1989545s
目錄

3.3 gitlab 權限管理
參考: https://www.cnblogs.com/zangxueyuan/p/9222014.html
1. 添加user
2. 添加 Group,往Group中添加user並且設定user的權限.
3. 創建project,項目的 url 組成如下:
http://ip + Groups/Users 的名字 + 項目名字.

3.4 gitlab 命令使用
參考: https://blog.csdn.net/wh211212/article/details/72627803
gitlab-ctl command (subcommand)
| Service Management Commands |
|
| start |
啟動所有服務 |
| stop |
關閉所有服務 |
| restart |
重啟所有服務 |
| status |
查看所有服務狀態 |
| tail |
查看日志信息 |
| service-list |
列舉所有啟動服務 |
| graceful-kill |
平穩停止一個服務 |
例子:
#啟動所有服務
[root@gitlab ~]# gitlab-ctl start
#啟動單獨一個服務
[root@gitlab ~]# gitlab-ctl start nginx
#查看日志,查看所有日志
[root@gitlab ~]# gitlab-ctl tail
#查看具體一個日志,類似tail -f
[root@gitlab ~]# gitlab-ctl tail nginx
| help |
幫助 |
| reconfigure |
修改配置文件之后,需要重新加載下 |
| show-config |
查看所有服務配置文件信息 |
| uninstall |
卸載這個軟件 |
| cleanse |
刪除gitlab數據,重新白手起家 |
例子:
#顯示所有服務配置文件
[root@gitlab ~]#gitlab-ctl show-config
#卸載gitlab
[root@gitlab ~]#gitlab-ctl uninstall
DatabaseCommands(慎重使用)
| Database Commands |
|
| pg-upgrade |
更新postgresql版本 |
| revert-pg-upgrade |
還遠先前的(離現在正在使用靠近的版本)一個數據庫版本 |
例子:
#升級數據庫
[root@gitlab ~]# gitlab-ctl pg-upgrade
Checking for an omnibus managed postgresql: OK
Checking if we already upgraded: OK
The latest version 9.6.1 is already running,nothing to do
#降級數據庫版本
[root@gitlab ~]# gitlab-ctl revert-pg-upgrade
3.3 gitlab 配置詳解
| 配置路徑 |
|
| gitlab配置文件 |
/etc/gitlab/gitlab.rb |
| unicorn配置文件 |
/var/opt/gitlab/gitlab-rails/etc/unicorn.rb |
| nginx配置文件 |
/var/opt/gitlab/nginx/conf/gitlab-http.conf |
| gitlab倉庫默認位置 |
/var/opt/gitlab/git-data/repositories |
修改web端口
如果80和8080端口被占用可以修改
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/gitlab-rails/etc/unicorn.rb
listen"127.0.0.1:8080", :tcp_nopush => true #這一行端口修改為你要端口
#修改nginx端口
[root@gitlabgitlab_pack]# vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
server{ #這里的80端口修改為你所需要的端口
listen *:80;
注:
只要修改了配置文件一定要重新加載配置
修改Prometheus端口
#Prometheus默認端口是9090
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
#根據自己情況自行修改成自己需要的port
修改項目工程數量
默認安裝好,你能創建的項目,只能創建10個
#第一種方式修改
[root@gitlab gitlab_pack]# vi/opt/gitlab/embedded/service/gitlab-rails/config/initializers/1_settings.rb
Settings.gitlab['default_projects_limit'] ||=10
修改成你自己所需要的參數,保存
Settings.gitlab['default_projects_limit'] ||=10000
#重新初始化
[root@gitlab postgresql]# gitlab-ctlreconfigure
#查看修改之后項目數量
注:
這個是在安裝完gitlab之后修改,如果已經使用一段時間,在修改項目的數量,需要你自己在自己的用戶下修改,第二次初始化,會縮短時間
#第二種方式修改
#首先登錄gitlab#點擊編輯
#關閉監控
#關閉服務
[root@gitlab gitlab_pack]# gitlab-ctl stop
[root@gitlabgitlab_pack]# vi /etc/gitlab/gitlab.rb
把true改成false
prometheus_monitoring['enable']= true
prometheus_monitoring['enable']= false
#保存
#重新加載配置文件
[root@gitlabgitlab_pack]# gitlab-ctl reconfigure
4. gitlab 代碼管理
參考: http://lishao378.blog.sohu.com/323704341.html 個人開發管理
https://blog.csdn.net/u012764358/article/details/62886427 sourcetree 和 gitlab的結合
https://blog.csdn.net/predict_wise/article/details/77898577 團隊協作開發
4.1. gitlab管理使用的兩種方式(http協議和ssh)
使用http協議的時候,每次pull,push 等都需要輸入 用戶名和密碼(不同的用戶不同的權限)
使用ssh免密碼的話,每個用戶必須先上傳密鑰。不同的密鑰對應不同的用戶所以權限也是不一樣的。(假如某個開發者得到項目管理者的密鑰對,他在本地認證使用的是這個密鑰,那么就有了項目管理者的權限,比如管理master,所以每個用戶用自己的密鑰對)
4.2 gitlab團隊協作開發
1. 使用fork
- 項目負責人在gitlab上新建一個項目,並分享URL給開發人員
- 開發人員在負責人的gitlab項目頁面上點擊“fork”按鈕,將此項目fork到自己的gitlab上,這相當於是從負責人那拷貝了一份項目副本,無論開發人員如何修改代碼都不會影響負責人那master分支上的代碼
- 然后開發人員可以根據自己的項目分工,像對待普通項目一樣做clone、add、commit、push等操作
- 如果開發人員人為一個小模塊做好了,可以點擊“pull request”按鈕,向負責人發送代碼合並請求,要合並的代碼文件也會以列表的形式同時發送給負責人,此時負責人會看到開發人員的請求,經審核如果代碼沒問題則會合並模塊,並向開發人員發送確認合並的通知
- 有的時候項目負責人也在開發,在不斷更新項目,如何也讓自己Github上的也跟着同步,這里參考這篇博文:
http://blog.csdn.net/sjt19910311/article/details/50596714
2. 不使用fork
-
負責人為開發人員分別創建開發分支(namedev_branch)
- 項目負責人在gitlab上新建一個項目,並為每一個開發人員創建一個開發分支(namedev_branch)
-
開發人員clone項目之后,經git branch檢查發現本地只有master分支,因此也需要把屬於自己的開發分支也一起獲取下來
-
切換到namedev_branch分支
- 之后的操作如同對待普通項目一樣
2. 負責人不為開發人員分別創建開發分支 (開發者自己創建)
雖然項目負責人不分別為開發人員創建分支,但是需要把他們添加到一個team中,否則開發人員在向項目push自己的開發分支時遇到權限錯誤
-
開發人員在把項目clone之后需要為自己新建一個開發分支(namedev_branch),因為經由git branch查看發現本地只有master分支
-
之后的操作如同對待普通項目一樣(是在namedev_branch分支進行操作
之后,項目負責人可以在項目的gitlab主頁上看到每個開發人員的工作進度,並考慮何時merge開發人員的分支到master分支上以完善項目
4.3 實驗1: 多人協作開發。不用fork
1. 關閉注冊功能(管理員權限)
2. 管理員添加用戶(給項目負責人創建組的權限), 並給每個用戶添加一個 ssh 密鑰(密鑰可以管理員這邊生成,也可以用戶自己生成發給管理員)。每個用戶一個密鑰對(不同的密鑰在 push 等操作的時候權限是不同的,你用的哪個用戶的密鑰連接,你就有哪個用戶的權限, ssh密鑰會默認添加到 git用戶的authorized_keys文件中.
3. 項目負責人 創建項目, 初始化項目,使項目擁有master分支,開啟分支保護(master分支是沒人開啟的,只有項目管理人可以直接操作master分支)。給該項目添加成員分配權限(一般是開發者權限),並且給每個成員創建一個分支。 也可以不給項目添加成員而是在創建項目的時候選擇組。
4. 開發者克隆版本庫,在自己的分支上開發,提交等操作。開發者想要將自己的分支合並到master分支,需要登錄gitlab發起合並請求,負責人審核后處理合並請求.
4.4 用fork
1. 管理員 禁用注冊功能,建立開發人員帳號,給權限。可以給項目leader多一點權限。
2. leader創建項目並且初始化項目,使其擁有master分支。 將項目url給開發人員
3. 開發人員用自己的帳號登錄,並且 派生 源項目。
4. 開發人 clone 派生的項目到本地進行開發,開發一個功能后發起合並請求。
5. 如何讓自己 派生的空間 的代碼和 源作者的代碼同步, 參考: http://blog.csdn.net/sjt19910311/article/details/50596714
5. git客戶端(TortoiseGit)Windows下的使用
參考: https://www.jianshu.com/p/9beb880332ba
https://blog.csdn.net/bird3014/article/details/72355648
https://www.cnblogs.com/ywlaker/p/6344334.html
https://www.cnblogs.com/wntd/p/5889118.html
6. gitlab 集群
