常用命令
- gitla-rails 用於啟動控制台進行特殊操作,比如修改管理員密碼,打開數據庫控制台等
# gitlab-rails dbconsole psql (9.6.11) Type "help" for help. gitlabhq_production=> \db List of tablespaces Name | Owner | Location ------------+-------------+---------- pg_default | gitlab-psql | pg_global | gitlab-psql | (2 rows)
tips:進入的是gitlab的管理控制台,可以使用pgsql的命令查詢數據。\q 退出數據庫
- gitla-rails 用於進入pgsql
# gitlab-psql psql (9.6.11) Type "help" for help. gitlabhq_production=# \db List of tablespaces Name | Owner | Location ------------+-------------+---------- pg_default | gitlab-psql | pg_global | gitlab-psql | (2 rows) gitlabhq_production=# \q
- gitlab-rake 數據備份和恢復
- gitlab-ctl 客戶端命令行操作
gitlab-ctl stop #停止gitlab gitlab-ctl start #啟動gitlab gitlab-ctl restart #重啟gitlab gitlab-ctl status #查看gitlab組件運行狀態 gitlab-ctl status nginx #查看組件狀態 gitlab-ctl tail nginx #查看組件日志
關閉注冊功能
root用戶登錄gitlab
取消注冊功能
保存配置
重新登錄,就沒有注冊用戶功能了
創建gitlab賬號
這是郵箱會收到一封郵件,點擊set password,設置密碼。使用新用戶賬號就可以登錄gitlab了。
創建組
使用root創建組,一個組里面可以有多個項目分支,可以將開發添加到組里面設置權限,不同的組就是公司不同的開發項目,不同的組添加不同的開發即可實現對開發的權限管理
組一般設為private(私用的:只允許組內成員查看)
創建項目
創建項目時,要選擇group。 換個方式理解:group<==>項目名,project<==>組件名,自己領悟
將用戶加入到組中,並分配角色
進入group里面,選擇要添加的用戶,並為他選擇一個角色。
owner
guest
developer
maintainer
本地使用示例
# Git global setup git config --global user.name collin git config --global user.email "tianyu29792569@163.com" # Create a new repository git clone http://10.80.0.21/rtdm/design.git cd design touch README.md git add README.md git commit -m "add README" git push -u origin master # Push an existing folder cd existing_folder git init git remote add origin http://10.80.0.21/rtdm/design.git git add . git commit -m "Initial commit" git push -u origin master # Push an existing Git repository cd existing_repo git remote rename origin old-origin git remote add origin http://10.80.0.21/rtdm/design.git git push -u origin --all git push -u origin --tags
數據保存方式
- SVN與CVS
每次提交的文件都是單獨保存,按照文件的提交時間區分不同的版本,保存至不同的邏輯存儲區域,后期恢復的時候基於之前版本文件恢復。
- gitlab
gitlab與SVN的數據保存方式不一樣,gitlab雖然也會在內部對數據進行邏輯划分保存,但是當后期提交的數據與之前提交過的數據沒有變化,gitlab直接快照之前的文件,而不是將文件重新上傳一份再保存一遍,優點:節省空間,加快代碼提交速度
常用git命令
工作區:代碼所在的目錄名稱
暫存區:git add 添加,存儲工作區中對代碼進行修改后的文件保存的地方
本地倉庫:git commit –m “注釋”,提交存儲再工作區和暫存區改過的文件
遠程倉庫:git push ,多個開發共同協作提交代碼的倉庫,即gitlab服務器
git config –global user.name “collin” 設置全局用戶名
git config –global user.email “123@163.com” 設置全局郵箱
git config –gobal –list 列出全局配置
# global設置,存儲在當前用戶家目錄中 .gitconfig文件中
git add index.html /dir ./* 添加指定文件,目錄,當前目錄下所有數據到暫存區
gti commit –m “注釋” 提交到工作區
git status 查看工作區狀態
git push 提交代碼到遠端服務器,默認是提交到master分支提交
git pull 獲取代碼到本地
git log 查看操作日志
vim .gitignore 定義忽略文件,定義那些文件不向gitlab服務器上傳
git reset –hard HEAD^ git版本回滾,一個^表示上一個版本,兩個^^表示上上版本。
git reflog 獲取每次提交的tag ID,然后可以使用—hard 根據提交的tag id進行回滾,本地倉庫沒有提交到gitlab的也會記錄tag_id,可以指定tag_id回滾到本地倉庫的某個版本
git reset –hard tag_id 回滾到指定版本
git branch 查看有哪些分支
git checkout –b branch_name 切換分支,如果分支不存在,則創建
git checkout branch_name 切換分支,分支不存在,會切換失敗
git config --global credential.helper store 在本地生成一個賬號密碼文件,這樣就不用每次都輸入了 cat ~/.git-credentials
git push --set-upstream origin master
git config --global push.default simple
在中央倉庫工作流程模式下,拒絕推送到上游與本地分支名字不同的分支。也就是只有本地分支名和上游分支名字一致才可以推送,就算是推送到不是拉取數據的遠程倉庫,只要名字相同也是可以的。在GIT 2.0中,simple將會是push.default的默認值。simple只會推送本地當前分支。
gitlab的備份和恢復
備份
- 停止gitlab服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
- 手工備份gitlab數據
gitlab-rake gitlab:backup:create #默認備份路徑 /var/opt/gitlab/backups/
- 啟動gitlab服務
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
自動備份腳本:將上面5條命令羅列接口,加到cron中,就可以實現定時備份
恢復
- 停止gitlab服務
gitlab-ctl stop unicorn
gitlab-ctl stop sidekiq
- 手工備份gitlab數據
gitlab-rake gitlab:backup:restore BACKUP=1607500860_2020_12_09_11.11.8 #注意這里不是文件全名
- 啟動gitlab服務
gitlab-ctl start unicorn
gitlab-ctl start sidekiq
gitlab漢化
web頁面設置語言選項
選擇 settings—>preferences—>localization—>languages 選擇簡體中文,然后點擊save changes,刷新頁面。
漢化包漢化
https://gitlab.com/xhang/gitlab
找到對應的版本,下載漢化包
漢化步驟
- 停止gitlab服務 gitlab-ctl stop
- 備份源文件 cp -rp /opt/gitlab/embedded/service/gitlab-rails /home/gitlab-rails.bak20201209
- 替換文件 alias cp=’cp’;cp -rf /usr/local/src/gitlab-v11.11.8-zh/* /opt/gitlab/embedded/service/gitlab-rails/
- 刷新配置 gitlab-ctl reconfigure
- 啟動gitlab服務 gitlab-ctl start
v11.11.8漢化效果
通過源碼漢化
漢化包下載地址https://gitlab.com/xhang/gitlab
# gitlab ctl stop
# git clone https://gitlab.com/xhang/gitlab.git
# head 1 /opt/gitlab/version manifest.txt 查看當前 gitlab 版本
# cd gitlab
# git diff v11.9.8 v11.9.8 zh
# git diff v12.3.5 v12.3.5 zh
# git diff v11.9.8 v11.9.8 zh > /root/v11.9.8 zh.diff
# gitlab ctl stop
# patch f d /op t/gitlab/embedded/service/gitlab rails p1 < /root/v11.9.8 zh.diff
# gitlab ctl reconfigure
# gitlab ctl start
常見的部署方式
- 藍綠部署
指的 是不停老版本 代碼 不 影響 上一個 版本 訪問 而是 在另外一套環境 部署新 版本然后進行測試,測試 通過 后 將 用戶 流量切到新版本, 其特點為業務 無 中斷,升級風 險相對較小。
具體過程:
1 、 當前 版本 業務正常訪問 V1
2 、 在另外 一套環境部署新代碼 V2 )),代碼可能是增加了功能或者是修復了某些 bug
3 、 測試 通過之后將 用戶 請求 流量切 到 新版本環境
4 、 觀察 一段時間 ,如 有 異常 直接 切換 舊 版本
5 、 下次 升級, 將 舊版本升級到新版本 V3
藍綠部署適用的場景:
1 、不停止老版本,額外部署 一套新版本,等測試發現新版本 OK 后,刪除老版本。
2 、藍綠發布是一種用於升級與更新的發布策略,部署的最小維度是容器,而發布的最小維度是應用。
3 、藍綠發布對於增量升級有比較好的支持,但是對於涉及數據表結構變更等等不可逆轉的升級,並不完全合適用藍綠發布來實現,需要結合一些業務的邏輯以及數據遷移與回滾的策略才可以完全滿足需求。
- 金絲雀發布
金絲雀發布也叫灰度發布,是指在黑與白之間,能夠平滑過渡的一種發布方式,灰度發布是增量發布的一種類型, 灰度發布是在原有版本可用的情況下,同時部署一個新版本應用作為“金絲雀”(小白鼠),測試新版本的性能和表現,以保障整體系統穩定的情況下,盡早發現、調整問題。
“金絲雀”的由來:17世紀,英國礦井工人發現,金絲雀對瓦斯這種氣體十分敏感。空氣中哪怕有極其微量的瓦斯,金絲雀也會停止歌唱;而當瓦斯含量超過一定限度時,雖然魯鈍的人類毫無察覺,金絲雀卻早已毒發身亡。
當時在采礦設備相對簡陋的條件下,工人們每次下井都會帶上一只金絲雀作為“瓦斯檢測指標”,以便在危險狀況下緊急撤離。
金絲雀發布,灰度發布步驟:
1、准備好部署各個階段的工件,包括:構建工件,測試腳本,配置文件和部署清單文件。 2、從負載均衡列表中移除掉“金絲雀”服務器。 3、升級“金絲雀”應用(排掉原有流量並進行部署)。 4、對應用進行自動化測試。 5、將“金絲雀”服務器重新添加到負載均衡列表中(連通性和健康檢查)。 6、如果“金絲雀”在線使用測試成功,升級剩余的其他服務器。(否則就回滾) 灰度發布可以保證整體系統的穩定,在初始灰度的時候就可以發現、調整問題,以保證其影響度。
灰度發布/金絲雀部署使用的場景
1、不停止老版本,額外搞一套新版本,不同版本應用共存。 2、灰度發布中,常常按照用戶設置路由權重,例如90%的用戶維持使用老版本,10%的用戶嘗鮮新版本。 3、經常與A/B測試一起使用,用於測試選擇多種方案。
A/B測試
A/B測試也是同時運行兩個APP環境,但是藍綠部署完全是兩碼事,A/B 測試是用來測試應用功能表現的方法,例如可用性、受歡迎程度、可見性等等,藍綠部署的目的是安全穩定地發布新版本應用,並在必要時回滾,即藍綠部署是一套正式環境環境在線,而A/B測試是兩套正式環境在線。