『中級篇』docker之CI/CD持續整合-整個流程串聯(75)
>原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!
>原文連結地址:『中級篇』docker之CI/CD持續整合-整個流程串聯(75)前面主要說了CI python,CI java,CDpython,這次主要說下從gitlab,gitlab-ci,gitlab CICD的整個從開發流程到釋出流程的,一個工作的流程。原始碼:https://github.com/limingios/docker/tree/master/No.11
流程很重要,建議都演示下。
- 設定下
setting --Repositoryt ---Protected Branches
allowed to push 改成 No one 任何人都不能直接往master分支裡面push程式碼
setting -- general ---Merge request
剛才給master設定了任何都不能修改改變,那我們的流程應該如何改變呢,任何人只能在分支模式下工作,當發現沒有問題可以提交到自己的分支,提交到merge request,管理員收到merge請求後,可以將開發人員自己的分支合併到master主分支上。
- 建立一個新的分支dev 這個名字可以以每個人名字命名,一個人一個分支
Repository -- Branches -- new Branches
- 程式碼 pull 然後切換到dev分支
已經在dev分支了。
- 修改程式碼 提交程式碼 push到dev分支
隨便找個程式碼 修改下,看看這個流程
- 提交後自動在dev分支pipline了
- 傳送merge請求
先進行pipline然後才merge 。
- 發現程式碼錯誤了。
pipline 有問題,就不允許mege了,merge request 列表
管理員這是告訴開發人員,你的程式碼有問題,開發人員開始修復程式碼重新提交。
commit-push程式碼
重新merge request
- 之前的程式碼還有個問題
現在任何的分支發生變化,它都進行了deploy,現在修改成只有master才進行deploy。
增加了 only master 只有master 才進行deploy
stages:
- style
- test
- deploy
pep8:
stage: style
script:
- pip install tox
- tox -e pep8
tags:
- python2.7
unittest-py27:
stage: test
script:
- pip install tox
- tox -e py27
tags:
- python2.7
unittest-py34:
stage: test
script:
- pip install tox
- tox -e py34
tags:
- python3/4
docker-deploy:
stage: deploy
script:
- docker build -t flask-demo .
- if [ $( docker ps -aq --filter name=web) ]; then docker rm -f web;fi
- docker run -d -p 5000:5000 --name web flask-demo
tags:
- test1
only:
- master
- 可以正常的pipline後就可以merge了,master分支已經變化。master分支開始觸發pipline。dev分支裡面也沒有deploy了
PS:基本目前這種就是開發和測試,CICD的完整的流程。git的工作流,基於分支的工作流。部署到CI的伺服器上。CD其實分幾種情況,可能部署到生產的環境的機器,另外的一個單獨系統,我們生產的環境的部署,一般情況是根據釋出來部署的。今天這個基本是開發和測試,沒有包括生產環境的。下次專案釋出做部署,應該可以gitlab,gitlab-ci的什麼流程