1.what is gitlab-ci docker imagegit
CI/CD 自動化集成,自動化部署。簡單的說就是把代碼提交到gitlab管理的同時部署到指定的server,打成docker image方便部署。部署的時候只須要將image run container即可以運行。docker
傳統作法,代碼commit 到gitlab後,login in server執行git pull同步新提交的代碼。每次更新代碼都須要作這樣的操做,本人很懶不喜歡浪費不少時間作重複的事情,因此看到gitlab 8.x集成了ci決定嘗試一下。服務器
2.CI env主要構成包括代碼版本庫 Gitlab,CI服務 Gitlab CI,CI運行器 GitLab Runner-docker。gitlab
3.持續集成相關概念測試
1.pipeline 優化
一次 Pipeline 其實至關於一次構建任務,裏面能夠包含多個流程,如安裝依賴、運行測試、編譯、部署測試服務器、部署生產服務器等流程。
任何提交或者 Merge Request 的合併均可以觸發 Pipeline,以下圖所示:code
+------------------+ +----------------+
| | trigger | |
| Commit / MR +---------->+ Pipeline |
| | | |
+------------------+ +----------------+
|
2.stagesserver
Stages 表示構建階段,說白了就是上面提到的流程。
咱們能夠在一次 Pipeline 中定義多個 Stages,這些 Stages 會有如下特色:ip
所以,Stages 和 Pipeline 的關係就是:ci
+--------------------------------------------------------+
| |
| Pipeline |
| |
| +-----------+ +------------+ +------------+ |
| | Stage 1 |---->| Stage 2 |----->| Stage 3 | |
| +-----------+ +------------+ +------------+ |
| |
+--------------------------------------------------------+
|
3.jobs
Jobs 表示構建工做,表示某個 Stage 裏面執行的工做。
咱們能夠在 Stages 裏面定義多個 Jobs,這些 Jobs 會有如下特色:
因此,Jobs 和 Stage 的關係圖就是:
+------------------------------------------+
| |
| Stage 1 |
| |
| +---------+ +---------+ +---------+ |
| | Job 1 | | Job 2 | | Job 3 | |
| +---------+ +---------+ +---------+ |
| |
+------------------------------------------+
|
4.搭建過程當中的主要步驟:
.gitlab-ci.yml
文件,而後添加一個 Runner,便可進行持續集成)