?
之前在 虛擬機Ubuntu 22.04上搭建GitLab操作步驟 上介紹了在Ubuntu 22.04上如何搭建社區版的GitLab,這里整理下作為GitLab管理員時在搭建完GitLab CE后,如何對其進行配置或設置
- 更改倉庫存儲位置:切換到root用戶下操作
- 默認存放位置:/var/opt/gitlab/git-data/repositories
- 自定義存放位置:/home/gitlab/git-data
- 修改配置文件/etc/gitlab/gitlab.rb,取消對git_data_dirs的注釋,調整為
git_data_dirs({"default" => {"path" => "/home/gitlab/git-data"} })
- 依次執行如下命令
mkdir -p /home/gitlab/git-data chown -R git:git /home/gitlab/git-data gitlab-ctl stop gitlab-ctl reconfigure gitlab-ctl start
- 注
- 若默認存放路徑中已存在項目,則需要將已存在的所有項目(@hashed目錄下所有內容)拷貝到新指定的@hashed目錄下
- 若出現storage_directory[/home/spring/gitlab/…](gitlab::gitlab-rails line 104) had an error: Mixlib::ShellOut::ShellCommandFailed類似錯誤,則需要設置/home/gitlab目錄也為git用戶,即執行如下命令:
chown -R git:git /home/gitlab
- 在/home/gitlab/git-data目錄下會生成repositories目錄
- 更改倉庫備份位置:切換到root用戶下操作
- 默認備份文件存儲位置:/var/opt/gitlab/backups
- 自定義存放位置:/home/gitlab/backups
- 修改配置文件/etc/gitlab/gitlab.rb,取消對gitlab_rails[‘backup_path’]的注釋,調整為:
gitlab_rails['backup_path'] = "/home/gitlab/backups"
- 依次執行如下命令
mkdir -p /home/gitlab/backups chown -R git:git /home/gitlab/backups gitlab-ctl stop gitlab-ctl reconfigure gitlab-ctl start
- 倉庫備份(兩塊硬盤數據同步):在root用戶下操縱
- GitLab完整備份,執行如下其中一條命令
gitlab-rake gitlab:backup:create # gitlab 12.2以下版本 gitlab-backup create # gitlab 12.2以上版本
- 會在設置的備份文件存儲路徑/home/gitlab/backups下生成.tar文件,如1719565848_2024_06_28_17.1.1_gitlab_backup.tar
- 其它需要備份的文件
- /etc/gitlab/gitlab.rb # 配置文件
- /etc/gitlab/gitlab-secrets.json # 數據庫加密密鑰等
- /var/opt/gitlab/nginx/conf # nginx配置文件
- /etc/postfix/main.cfpostfix # 郵件配置
- 自動備份
- 編輯crontab文件,執行:crontab -e,編輯文件內容如下,每晚12點執行備份
0 0 * * * gitlab-backup create 0 0 * * * cp /etc/gitlab/gitlab.rb /home/gitlab/backups/ 0 0 * * * cp /etc/gitlab/gitlab-secrets.json /home/gitlab/backups/ 0 0 * * * cp -a /var/opt/gitlab/nginx/conf /home/gitlab/backups/
- 重啟crontab服務,執行如下命令
service cron restart
- 注:備份時需要保持GitLab處于正常運行狀態
- 編輯crontab文件,執行:crontab -e,編輯文件內容如下,每晚12點執行備份
- 設置備份過期時間
- 打開/etc/gitlab/gitlab.rb文件,取消對gitlab_rails[‘backup_keep_time’]的注釋,調整為如下內容:以秒為單位,設置希望保留每個備份的秒數,這里設置為保存30天
gitlab_rails['backup_keep_time'] = 2592000
- 依次執行如下命令
gitlab-ctl stop gitlab-ctl reconfigure gitlab-ctl start
- 打開/etc/gitlab/gitlab.rb文件,取消對gitlab_rails[‘backup_keep_time’]的注釋,調整為如下內容:以秒為單位,設置希望保留每個備份的秒數,這里設置為保存30天
- GitLab備份恢復,依次執行如下命令
gitlab-ctl stop unicorn # 停止相關數據連接服務 gitlab-ctl stop sidekiq gitlab-rake gitlab:backup:restore BACKUP=1719565848_2024_06_28_17.1.1 # 編號,1719565848_2024_06_28_17.1.1_gitlab_backup.tar,輸入兩次yes gitlab-ctl start
- 注:GitLab版本號要相同
- GitLab完整備份,執行如下其中一條命令
- GitLab遷移
- 在新服務器上安裝相同版本的GitLab
- 將備份生成的備份文件拷貝到新服務器的相同目錄下
- 添加新用戶
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard
- 點擊 New user: 填寫Name, Username, Email,如Name:fengbingchun; Username: fengbingchun; Email: fengbingchun@163.com
- 取消勾選:can create top level group
- Projects limit: 若設置為0,則新用戶不允許創建項目
- 點擊 Create user
- 點擊Edit進入后:設置密碼、也可重新編輯用戶
- 點擊 New user: 填寫Name, Username, Email,如Name:fengbingchun; Username: fengbingchun; Email: fengbingchun@163.com
- 注:新用戶首次登錄,要求修改密碼
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard
- 編輯用戶
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard --> Latest users
- 點擊要編輯的用戶,點擊Edit
- 修改,然后點擊Save changes
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard --> Latest users
- 刪除用戶
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard --> Latest users
- 點擊要刪除的用戶,點擊三個"豎點",點擊"Delete user"
- 需要確認,根據提示輸入,然后點擊Delete suer按鈕
- 注:刪除用戶后無法撤銷或恢復,可用Block user替代
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Dashboard --> Latest users
- 添加新組
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Groups --> New group
- Group name:如soft
- 其它項使用默認
- 點擊Create group
- 注
- 一個組是多個項目的集合
- 每個部門可創建一個組,部門下的項目全放在此組下
- 組的成員只能查看他們有權訪問的項目
- 現有的項目可以移動到組中
- 進入:http://192.168.18.215/admin , 點擊:Overview --> Groups --> New group
- 創建新項目
- 左鍵點擊用戶圖標左側的"+" --> 點擊New project/repository --> 點擊Create blank project
- Project name: 如test
- Project URL:如果此項目是某個組中的,則點擊Pick a group or namespace,選擇一個組;否則此項目不屬于任何組
- 其它使用默認
- 點擊Create project
- 左鍵點擊用戶圖標左側的"+" --> 點擊New project/repository --> 點擊Create blank project
- 將用戶添加到項目
- 進入到項目:點擊Manage --> Members: 點擊Invite members
- Username,name or email address:已存在的用戶
- Select a role: 一般為Developer或Maintainer
- 點擊Invite
- 注:角色(role)如果為Developer則默認不能向protected分支提交code
- 進入到項目:點擊Manage --> Members: 點擊Invite members
- 設置/取消指定分支為protected
- 進入項目頁:Settings --> Repository --> Protected branches:點擊Expand:
- 取消protected: 點擊指定分支為Unprotect
- 設置protected: 點擊Add protected branch
- Branch:選擇一個分支
- Allowed to merge:一般選擇Maintainers角色
- Allowed to push and merge:一般選擇Maintainers角色
- 點擊Protect
- 注:默認受保護分支不允許Developer直接push code,也沒有merge權限
- 進入項目頁:Settings --> Repository --> Protected branches:點擊Expand:
- 取消merge后增加的新的commit ID
- 提交merge request時勾選squash commits when merge request is accepted或merge時勾選squash commit:好像不起作用
- 調整GitLab的默認merge策略:進入項目
- Settings --> Merge requests: 勾選:Fast-forward merge,默認勾選的是Merge commit: 點擊Save changes
- 設置未登錄用戶的默認語言為中文
- 進入:http://192.168.18.215/admin , 點擊:Settings --> Preferences --> Localization
- Default language:選擇Chinese, Simplified - 簡體中文(92% translated)
- 點擊 Save changes
- 設置用戶在沒有活動的情況下保持登錄的時間,如設置為5分鐘
- 進入:http://192.168.18.215/admin , 點擊:Settings --> General
- Session duration(minutes):5
- 點擊 Save changes
- 依次執行如下命令
gitlab-ctl stop gitlab-ctl reconfigure gitlab-ctl start
- GitLab Web界面顯示中文:每個用戶單獨設置
- 進入主頁后,點擊用戶頭像,然后點擊"preferences"
- Localization: Language:選擇Chinese, Simplified - 簡體中文(92% translated)
- 點擊 Save changes
- 刷新頁面即可
- 進入主頁后,點擊用戶頭像,然后點擊"preferences"
- GitLab同個賬號不能同時登錄多個PC機:每個用戶單獨操作
- 可通過撤銷非本機的Active Sessions來防止登錄多個PC機
- 點擊用戶圖標 --> Preferences --> Active Sessions:移除掉非當前session的所有其它項
- 可通過撤銷非本機的Active Sessions來防止登錄多個PC機
- 雙重認證(two-factor authentication(2FA)):每個用戶單獨操作
- 獲取驗證碼
- 手機應用商店上安裝Authenticator,由微軟開發
- 登錄GitLab: 點擊用戶圖標 --> Preferences --> Account --> 點擊"Enable two-factor authentication"
- 打開手機的Authenticator,掃描二維碼
- 輸入current password
- 輸入verification code:Authenticator顯示的一次性密碼代碼,長度為6位,每30秒更新一次
- 保存或下載恢復碼:點擊Copy codes或Download codes,保存的文件名為gitlab-recovery-codes.txt,此文件非常重要,在收不到驗證碼時,可使用此恢復,并且只能使用一次
- 點擊Proceed
- 設置Tokens: 點擊用戶圖標 --> Preferences --> Access Tokens:啟用雙重認證后,git clone/pull/push code時,需要使用token作為密碼
- 點擊"Add new token"
- 填寫Token name:可任意填寫,如test
- 填寫Expiration date:最長截止日期為1年
- Select scopes:必須勾選read_repository和write_repository
- 點擊"Create personal access token"
- 復制保存個人token
- 注:首次clone代碼時,需要填寫用戶名和密碼,此密碼為個人token而不是登錄密碼
- 獲取驗證碼
- 取消雙重認證:每個用戶單獨操作
- 點擊用戶圖標 --> Preferences --> Account:點擊Manage two-factor authentication
- Disable two-factor authentication: 輸入用戶密碼,點擊Disable two-factor authentication,再點擊Disnable
- 關閉Auto DevOps
- 進入:http://192.168.18.215/admin , Settings --> CI/CD
- 點擊"Continuous Integration and Deployment":
- 取消勾選:Default to Auto DevOps pipeline for all projects、Enable instance runners for new projects
- 點擊 Save changes
- 管理員常用設置匯總
- 新建項目、新建用戶、新建群組
- 編輯/刪除所有項目、編輯/刪除用戶、編輯/刪除群組
- 監控:系統信息(可查看CPU數、內存使用情況、磁盤使用情況)、后臺任務、運行狀況檢查
- 項目的可見性與訪問控制
- 設置用戶是否可創建項目及可創建的數目(默認為100000)以及是否允許用戶創建頂級群組
- 設置項目創建期間可從GitHub、Bitbucket源導入
- 設置項目中支持的單個文件的最大大小,默認為100MiB
- 設置新用戶最小密碼長度、是否需電子郵件確認
- 設置是否強制執行雙重認證
- 設置新項目默認分支名稱、默認分支保護、允許向保護分支push的角色(Developers、Maintainers)
- 設置未登錄用戶的默認語言
- 設置會話持續時間(用戶在沒有活動的情況下保持登錄的時間)
- 注:
- GitLab使用的是UTC時間,即GitLab Web端顯示的是UTC時間:UTC+8小時=北京時間
- 不要在非個人機上clone code時輸入個人GitLab用戶名和密碼,會被Git的憑證助手記錄(Git Credential Manager),刪除此憑證
- windows:
- 控制面板 --> 用戶賬戶 --> 憑據管理器 --> 管理Windows憑據 --> 找到git:http://192.168.18.215: 將其刪除
- 若有~/.git-credentials文件,將其刪除
- ubuntu:若有~/.git-credentials文件,將其刪除
- windows: