DevOps持續(xù)集成之Git、GitLab、GitLab CI篇
為什么要使用Git
分布式
分支管理
節(jié)省磁盤空間?
大家都在用(GitHub、Gitee、coding.net)

Git使用指南
Git 四個區(qū)域:
工作區(qū):就是你克隆項目到本地后,項目所在的 文件夾目錄。
暫存區(qū):用于存儲工作區(qū)中添加上來的變更(新 增、修改、刪除)的文件的地方。
本地倉庫:用于存儲本地工作區(qū)和暫存區(qū)提交上 來的變更(新增、修改、刪除)過的文件的地方。
遠(yuǎn)程倉庫:托管代碼的服務(wù)器,提供web服務(wù), 供大家方便地進行下載,查看,提交和存儲。

Git基本工作流程:
在工作目錄中修改文件。
暫存文件,將文件的快照放入暫存區(qū)域。
提交更新,找到暫存區(qū)域的文件,將快照永久性 存儲到 Git 倉庫目錄。

Git提交規(guī)范:
總體原則,從哪個分支checkout的代碼就合回那個 分支,避免分支合并混亂導(dǎo)致代碼錯誤。
必須以mergerequest的方式合回主分支,并且有 開發(fā)負(fù)責(zé)人對代碼review后才能合入。
當(dāng)合并發(fā)生沖突時,必須解決完沖突才能提交代碼 以及合并分支。
分支命名盡量以功能點命名,比如 feature_accessdata,bugfix_dataquery。
Git分支管理最佳實踐:
單主干的分支實踐(Trunk-based development,TBD),Google和Facebook都使用這種方式。

Git分支管理最佳實踐:
Git-flow的分支實踐,是目前流傳最廣的git分支管理, 圍繞的核心概念是版本發(fā)布(release)。因此 Git- flow 適用于有較長版本發(fā)布周期的項目。
Git-flow 流程中包含 5 類分支,分別是 master、 develop、新功能分支(feature)、發(fā)布分支 (release)和 hotfix。

GitLab代碼管理

用GitLab-CI進行持續(xù)集成
Gitlab-CI是什么??
gitlab-ci是CI/CD里面的一種。
CI/CD:
CI(Continuous integration)持續(xù)集成,是一種軟件開發(fā)實踐, 每次代碼提交,都通過自動化的構(gòu)建(包括編譯、發(fā)布、自動測試)
CD(continuous deployment)持續(xù)部署是通過自動化的構(gòu)建、 測試和部署來快速交付高質(zhì)量的產(chǎn)品。
gitlab-ci是從gitlab 8.0開始,加入到gitlab中的,我們只需要在 項目中添加一個.gitlab-ci.yml文件,并添加一個gitlab-runner, 即可完成我們的CI/CD操作了。

常見的CI/CD:?
jenkins?
github上的travis-ci?
Drone CI?
Gitlab-ci

Gitlab-CI需要了解下面三個概念:

前面講解了Gitlab-ci中的一些概念,那我們定義的這個構(gòu)建任務(wù)是運行在哪里的呢?
我們需要先下載gitlab runner的工具,下載地址:https://docs.gitlab.com/runner/,然后我們能得到一個gitlab-runner可執(zhí)行文件,然后 執(zhí)行g(shù)itlab-runner register腳本。
?這個腳本需要下面幾個參數(shù):

基本寫法:
我們在工程里面創(chuàng)建.gitlab-ci.yml,最簡單的寫法如下: 這是一種類似json的一種描述方法,如果沒了解過的可以搜索yaml進行了解。
定義了一個個pipeline,里面有兩個stage,test和build。然后先執(zhí) 行build,再執(zhí)行test的構(gòu)建階段。build構(gòu)建階段是job2構(gòu)成,test 構(gòu)建階段由job1構(gòu)成。分別執(zhí)行對應(yīng)的script。?
更多的關(guān)鍵字及具體介紹查看官網(wǎng):? http://docs.gitlab.com/ce/ci/yaml/README.html

簡單例子:
.gitlab-ci.yml構(gòu)建任務(wù)的定義文件中,描述了stage有 5個階段。
同時設(shè)置了全局的cache。Job only表示只有對應(yīng)的分 支才會觸發(fā)運行對應(yīng)的Jobs。
install_deps:安裝依賴
test階段:運行npmruntest
build階段:執(zhí)行build對應(yīng)的操作
deploy_test階段:使用pm2部署到測試服務(wù)器
deploy_production:部署到生產(chǎn)階段

以上簡單介紹了Git、Git分支策略、GitLab及GitLab CI,關(guān)于GitLab在DevOps的更多玩法歡迎大家去實踐。
請關(guān)注微信公眾號 【DevOpsHub】,獲取更多關(guān)于DevOps研發(fā)運維一體化的信息
