一、Devops整合gitlab 進行持續(xù)集成
gitlab CI已經(jīng)集成到了git lab中,只需要在項目中添加一個gitlab-ci.yml文件即可進行持續(xù)集成,
1、相關(guān)概念
Pipeline
一次 Pipeline 其實相當(dāng)于一次構(gòu)建任務(wù),里面可以包含多個流程,如安裝依賴、運行測試、編譯、部署測試服務(wù)器、部署生產(chǎn)服務(wù)器等流程。 任何提交或者 Merge Request 的合并都可以觸發(fā) Pipeline,如下圖所示:
+------------------+ +----------------+
| | trigger | |
| Commit / MR +---------->+ Pipeline |
| | | |
+------------------+ +----------------+
Stages
Stages 表示構(gòu)建階段,說白了就是上面提到的流程。 我們可以在一次 Pipeline 中定義多個 Stages,這些 Stages 會有以下特點:
所有 Stages 會按照順序運行,即當(dāng)一個 Stage 完成后,下一個 Stage 才會開始
只有當(dāng)所有 Stages 完成后,該構(gòu)建任務(wù) (Pipeline) 才會成功
如果任何一個 Stage 失敗,那么后面的 Stages 不會執(zhí)行,該構(gòu)建任務(wù) (Pipeline) 失敗
因此,Stages 和 Pipeline 的關(guān)系就是:
+--------------------------------------------------------+
| |
| Pipeline |
| |
| +-----------+ +------------+ +------------+ |
| | Stage 1 |---->| Stage 2 |----->| Stage 3 | |
| +-----------+ +------------+ +------------+ |
| |
+--------------------------------------------------------+
Jobs
Jobs 表示構(gòu)建工作,表示某個 Stage 里面執(zhí)行的工作。 我們可以在 Stages 里面定義多個 Jobs,這些 Jobs 會有以下特點:
相同 Stage 中的 Jobs 會并行執(zhí)行
相同 Stage 中的 Jobs 都執(zhí)行成功時,該 Stage 才會成功
如果任何一個 Job 失敗,那么該 Stage 失敗,即該構(gòu)建任務(wù) (Pipeline) 失敗
所以,Jobs 和 Stage 的關(guān)系圖就是:
+------------------------------------------+
| |
| Stage 1 |
| |
| +---------+ +---------+ +---------+ |
| | Job 1 | | Job 2 | | Job 3 | |
| +---------+ +---------+ +---------+ |
| |
+------------------------------------------+
二、Devops-Service 使用Helm 進行微服務(wù)應(yīng)用打包
Helm 使用稱為 chart 的包裝格式。chart 是描述相關(guān)的一組 Kubernetes 資源的文件集合。單個 chart 可能用于部署簡單的東西,比如 memcached pod,或者一些復(fù)雜的東西,比如完整的具有 HTTP 服務(wù),數(shù)據(jù)庫,緩存等的 Web 應(yīng)用程序堆棧。
chart 通過創(chuàng)建為特定目錄樹的文件,將它們打包到版本化的壓縮包,然后進行部署。
三、整體流程
